我一直在尝试设置一个为我的应用程序发送推送通知的程序。首先,我使用了这个教程http://mobiforge.com/developing/story/programming-apple-push-notification-services
由此,我学会了如何获取设备的令牌。我尝试按照教程的其余部分操作,但在接近尾声时卡住了,它告诉我下载一个名为PushMeBaby的类,并更改几行代码并运行它。然而,我甚至不能编译这个应用程序。它会给我一个错误:
运行目标My Mac 64位对于运行方案'PushMeBaby‘无效。
经过几个小时的努力,我决定切换到一个新的教程,因为我找不到解决这个问题的方法。
这将我引向java和一个名为JavaApns http://code.google.com/p/javapns/的java类。
为了安装这个库并使其正常工作,您需要满足以下几个要求,我认为这就是问题所在。第三个要求告诉我还需要下载并安装另外两个库:
bcprov-jdk15-146.jar log4j-1.2.15.jar
第一个库工作得很好,因为没有错误。然而,log4是以压缩文件的形式出现的,每当我尝试解压缩它时,它都会给我一个错误“发生意外错误(28)”,所以我只是进入压缩文件,只解压缩该库,而不是整个文件(没有错误)。然后,我将这两个libraries+JavaAPNS都放到我的项目中,并用
我的代码
import javapns.Push;
import javapns.communication.exceptions.CommunicationException;
import javapns.communication.exceptions.KeystoreException;
public class test {
public static void main(String[] args) {
try {
Push.alert("Hello World!", "MyCertificate.p12", "MyPassword",false, "MyDevicetoken");
} catch (CommunicationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (KeystoreException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}最后,这给我带来的错误是: /////////////////////////////////////////////////////////////////////////////////
log4j:WARN No appenders could be found for logger (javapns.notification.Payload).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info./////////////////////////////////////////////////////////////////////////////////
我去了链接logging.apache.org/log4j/1.2/faq.html#noconfig,但是它并没有真正解释如何解决这个问题。所以,如果你有任何想法或建议(或者你想推荐一个更好的库/教程),我将不胜感激!
发布于 2012-01-25 22:37:00
从您转到的同一个link:
为什么我看到一条关于“找不到记录器的附加器”和“请正确配置log4j”的警告?
当找不到默认配置文件log4j.properties和log4j.xml,并且应用程序没有执行显式配置时,就会出现这种情况。log4j使用Thread.getContextClassLoader().getResource()来定位默认配置文件,并且不直接检查文件系统。要知道放置log4j.properties或log4j.xml的适当位置,需要了解正在使用的类加载器的搜索策略。log4j不提供默认配置,因为在某些环境中可能禁止输出到控制台或文件系统。
另外:
为什么log4j无法在J2EE或WAR应用程序中找到我的属性文件?
简而言之: log4j类和属性文件不在同一个类加载器的作用域内。
长长的答案(以及如何处理它):J2EE或Servlet容器利用Java类加载系统。随着Java 2的发布,Sun改变了类加载的工作方式。在Java 2中,类加载器以分层的父子关系排列。当子类加载器需要查找类或资源时,它首先将请求委托给父类加载器。
Log4j只使用默认的Class.forName()机制装入类。资源的处理方式与此类似。有关更多详细信息,请参阅java.lang.ClassLoader文档。
因此,如果您遇到问题,请尝试自己加载类或资源。如果你找不到它,log4j也找不到。;)
发布于 2013-04-09 23:35:56
请检查以下内容:
https://stackoverflow.com/a/11240411/273119
他们有你正在搜索的答案。他们说你需要打电话给:
BasicConfigurator.configure();发布于 2012-01-29 00:14:02
正如JavaPNS的"Troubleshooting“页面上所解释的,您可以通过编程启用日志记录。你而不是需要用配置文件设置整个Log4j系统。
https://stackoverflow.com/questions/9003356
复制相似问题