我一直在尝试设置一个程序,为我的应用程序发送推送通知。我先用过 本教程 http://mobiforge.com/developing/story/programming-apple-push-notification-services
由此我学会了如何获取设备的令牌。 我尝试按照教程的其余部分进行操作,但最终被卡住了,这告诉我下载一个名为PushMeBaby的类,并更改一些代码行并运行它。但是我甚至无法编译这个应用程序。它给了我错误:
运行目标My Mac 64位对于运行方案'PushMeBaby'无效。
经过几个小时的努力来解决这个问题之后,我决定切换到一个新教程,因为我无法找到解决这个问题的方法。这将我引向java和某个名为JavaApns的java类 http://code.google.com/p/javapns/
为了安装此库并使其工作,您需要满足一些要求 这是我认为问题出现的地方。第三个要求告诉我还要下载并安装另外两个库:
bcprov-jdk15-146.jar 的log4j-1.2.15.jar
第一个库工作正常,因为没有错误。但是log4有一个压缩文件,每当我尝试解压缩它时,它就会给出错误“发生意外错误(28)”所以我只是进入zip文件而只解压缩库而不是整个文件(没有错误)。然后我将两个库+ 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
,但它并没有真正解释如何解决问题。所以,如果你有任何想法或建议(或者你想建议一个更好的图书馆/教程),我将不胜感激!
答案 0 :(得分:1)
你去过同一个link:
为什么我会看到“没有找到记录器的appender”和“请正确配置log4j”的警告?
当默认配置文件为log4j.properties和时,会发生这种情况 无法找到log4j.xml,应用程序不执行任何显式操作 组态。 log4j使用Thread.getContextClassLoader()。getResource() 找到默认配置文件,不直接检查 文件系统。知道要放置的适当位置 log4j.properties或log4j.xml需要了解搜索 正在使用的类加载器的策略。 log4j不提供默认值 配置,因为输出到控制台或文件系统可能是 在某些环境中禁止使用。
此外:
为什么log4j无法在J2EE或WAR应用程序中找到我的属性文件?
简答:log4j类和属性文件不是 在同一个类加载器的范围内。
答案很长(以及如何处理):J2EE或Servlet容器 利用Java的类加载系统。 Sun改变了类加载的方式 适用于Java 2的发布。在Java 2中,安排了类加载器 在分层的父子关系中。当一个儿童类加载器 需要找到一个类或一个资源,它首先将请求委托给 父母。
Log4j仅使用默认的Class.forName()机制进行加载 类。资源的处理方式类似。请参阅文档 java.lang.ClassLoader了解更多详情。
因此,如果您遇到问题,请尝试加载类或资源 你自己。如果你找不到它,log4j也不会。 ;)
答案 1 :(得分:1)
检查一下:
https://stackoverflow.com/a/11240411/273119
有你正在寻找的答案。 他们说你需要打电话:
BasicConfigurator.configure();
答案 2 :(得分:0)
如JavaPNS“Troubleshooting”页面所述,您可以通过编程方式启用日志记录。您不需要使用配置文件设置整个Log4j系统。