首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaPNS NoClassDefFoundError

JavaPNS NoClassDefFoundError
EN

Stack Overflow用户
提问于 2015-06-07 17:01:06
回答 1查看 738关注 0票数 0

我正在使用JavaPNS通过我的家庭计算机发送远程推送通知(iOS)。在遵循关于如何准备证书的raywenderlich.com步骤之后,我取出了.p12文件并将其放在下面编写的代码中:

代码语言:javascript
复制
  import javapns.Push;
  import javapns.notification.Payload;
  import javapns.notification.PushedNotifications;

  import org.apache.log4j.*;

  public class Main{
        public static void main(String[] args) {
              Push.alert("Hello World!", "PushChatKey.p12", "pushchat", false, "Token");
        }

  }

我没有在上面的代码中包括我的设备令牌,但是我100%确信我的实际程序中的令牌号是正确的。当我运行程序时,我在(eclipse)控制台中得到以下错误:

代码语言:javascript
复制
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/log4j/Logger
    at javapns.notification.Payload.<clinit>(Payload.java:25)
    at javapns.Push.alert(Push.java:47)
    at Main.check(Main.java:86)
    at Main.main(Main.java:115)
Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Logger
    at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 4 more

我的.p12文件位于我的java项目文件夹中,在查看之前问到的其他问题时,我将org.apache导入语句放在我的程序中。

对于这样的问题,我看到的其他答案是使用一个包含行:BasicConfigurator.configure()的try-catch语句;

当我把它放进去时,Eclipse告诉我:"BasicConfigurator不能被解析“,它给了我自己创建类的选项。

我不知道我做错了什么。任何帮助都将不胜感激。预先感谢所有回复的人。

EN

回答 1

Stack Overflow用户

发布于 2015-08-06 08:57:15

这是因为javapns使用依赖项log4j记录信息,并且在运行时找不到它。

Javapns文档声明了这里

启用日志库日志记录 javapns使用Log4J进行日志记录。要快速启用日志记录,请添加以下代码: 导入org.apache.log4j.*; 在代码中使用javapns之前: 尝试{ BasicConfigurator.configure();} catch (异常e) {} 如果已经在使用log4j,则可以通过在log4j.properties文件中添加以下行来启用javapns的日志记录: log4j.logger.javapns=debug 要解决证书或SSL问题,请将以下内容添加到Java参数中: -Djavax.net.debug=all

如果您正在使用Maven,那么将此依赖项添加到实际的依赖项中:

代码语言:javascript
复制
<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>

如果您没有使用Maven,那么只需下载.jar并将其添加到项目的库中。

在我这方面,我只是不能将log4j添加到我的依赖项中,因为它会使我的其他库崩溃。实际上,我正在寻找一种方法来禁用javapns的log4j。

编辑:最后,我将log4j添加到我的依赖项中,并将BasicConfigurator.configure();添加到了泽西的ResourceConfig类中。当我将log4j与我的其他库一起使用时,我可能错过了这个部分,所以现在它工作得很好。

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

https://stackoverflow.com/questions/30696164

复制
相关文章

相似问题

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