JavaApns log4j.apache错误iPhone推送通知

时间:2012-01-25 13:16:40

标签: xcode apple-push-notifications

我一直在尝试设置一个程序,为我的应用程序发送推送通知。我先用过 本教程 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,但它并没有真正解释如何解决问题。所以,如果你有任何想法或建议(或者你想建议一个更好的图书馆/教程),我将不胜感激!

3 个答案:

答案 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系统。