首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaApns log4j.apache错误iPhone推送通知

JavaApns log4j.apache错误iPhone推送通知
EN

Stack Overflow用户
提问于 2012-01-25 21:16:40
回答 3查看 3.2K关注 0票数 2

我一直在尝试设置一个为我的应用程序发送推送通知的程序。首先,我使用了这个教程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都放到我的项目中,并用

我的代码

代码语言:javascript
复制
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();
    }


       }
}

最后,这给我带来的错误是: /////////////////////////////////////////////////////////////////////////////////

代码语言:javascript
复制
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,但是它并没有真正解释如何解决这个问题。所以,如果你有任何想法或建议(或者你想推荐一个更好的库/教程),我将不胜感激!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 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也找不到。;)

票数 1
EN

Stack Overflow用户

发布于 2013-04-09 23:35:56

请检查以下内容:

https://stackoverflow.com/a/11240411/273119

他们有你正在搜索的答案。他们说你需要打电话给:

代码语言:javascript
复制
    BasicConfigurator.configure();
票数 1
EN

Stack Overflow用户

发布于 2012-01-29 00:14:02

正如JavaPNS的"Troubleshooting“页面上所解释的,您可以通过编程启用日志记录。你而不是需要用配置文件设置整个Log4j系统。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9003356

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档