JavaPNS NoClassDefFoundError
我正在使用JavaPNS通过我的家庭计算机发送远程推送通知(iOS)。在完成了有关如何准备证书的步骤后,我获取了.p12文件并将其放入下面编写的代码中:JavaPNS NoClassDefFoundError,java,ios,eclipse,push-notification,javapns,Java,Ios,Eclipse,Push Notification,Javapns,我正在使用JavaPNS通过我的家庭计算机发送远程推送通知(iOS)。在完成了有关如何准备证书的步骤后,我获取了.p12文件并将其放入下面编写的代码中: import javapns.Push; import javapns.notification.Payload; import javapns.notification.PushedNotifications; import org.apache.log4j.*; public class Main{
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)控制台中出现以下错误:
线程“main”java.lang.NoClassDefFoundError中的异常:org/apache/log4j/Logger
位于javapns.notification.Payload.(Payload.java:25)
在javapns.Push.alert(Push.java:47)
检查Main.check(Main.java:86)
Main.Main(Main.java:115)
原因:java.lang.ClassNotFoundException:org.apache.log4j.Logger
在java.net.URLClassLoader$1.run(URLClassLoader.java:372)
在java.net.URLClassLoader$1.run(URLClassLoader.java:361)
位于java.security.AccessController.doPrivileged(本机方法)
位于java.net.URLClassLoader.findClass(URLClassLoader.java:360)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:424)
位于sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 4更多
我的.p12文件位于java项目文件夹中,在查看之前提出的其他问题后,我将org.apache导入语句放在程序中
我看到的其他类似问题的答案是使用包含以下行的try-catch语句:
BasicConfigurator.configure()
当我将其放入时,Eclipse告诉我:“BasicConfigurator无法解析”,它给了我自己创建类的选项
我不确定我做错了什么。任何帮助都将不胜感激。提前感谢所有回复者。这是因为javapns使用依赖项log4j记录信息,在运行时找不到它 Javapns wiki文档说明: 启用日志记录 库日志记录 javapns使用Log4J进行日志记录。 要快速启用日志记录,请添加以下代码:
import org.apache.log4j.*;
在代码中使用javapns之前:
try {
BasicConfigurator.configure();
} catch (Exception e) { }
如果您已经在使用log4j,那么可以通过
将以下行添加到log4j.properties文件:
log4j.logger.javapns=debug
Java SSL日志以排除故障
证书或SSL问题,请将以下内容添加到java VM
论据:
-Djavax.net.debug=all
如果您使用的是Maven,则将此依赖项添加到实际依赖项中:
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
log4j
log4j
1.2.17
如果您没有使用Maven,那么只需下载.jar并将其添加到项目的libs中即可
就我而言,我只是不能将log4j添加到依赖项中,因为它会使我的另一个libs崩溃。我实际上在寻找一种方法来禁用javapns的log4j
编辑:我最终向依赖项添加了log4j,并添加了BasicConfigurator.configure();去我的运动衫资源配置课。当我将log4j与我的另一个库一起使用时,我可能错过了这一部分,所以现在它可以正常工作了
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>