jar文件不会在java 7中运行,但在java 6中运行

时间:2013-11-05 10:07:36

标签: java linux jar

java更新后,当我运行

时,“没有”发生
java -Djavax.net.ssl.trustStore=cert.cer -Djavax.net.ssl.trustStorePassword=123456 -jar client.jar

我没有输出,终端忙,直到ctrl + c

如果我在旧环境中运行它可以正常工作,例如:

/usr/lib/jvm/java-6-openjdk-i386/bin/java -Djavax.net.ssl.trustStore=cert.cer -Djavax.net.ssl.trustStorePassword=123456 -jar client.jar

什么可能导致这样的问题以及如何调试?

java -version

java version "1.7.0_25"
OpenJDK Runtime Environment (IcedTea 2.3.10) (7u25-2.3.10-1ubuntu0.12.04.2)
OpenJDK Server VM (build 23.7-b01, mixed mode)

2 个答案:

答案 0 :(得分:0)

是否正在使用任何CPU?

要获得线程转储,请将此信号发送给它:

杀-3 -

(线程转储将写入stdout)。

你也可以尝试扩展jar,在META-INF / MANIFEST.MF中查找主类,并明确指定主类:

java -jar jarname.jar the.main.Class

答案 1 :(得分:0)

基于线程堆栈转储...

"main" prio=10 tid=0xb6506800 nid=0xfd2 runnable [0xb66de000]
   java.lang.Thread.State: RUNNABLE
        at sun.reflect.Reflection.getCallerClass0(Native Method)
        at sun.reflect.Reflection.getCallerClass(Reflection.java:68)
        at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.getContext(ClassLoaderContextSelector.java:86)
        at org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.getContext(ClassLoaderContextSelector.java:66)
        at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:82)
        at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:34)
        at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:360)
        at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:319)
        at se.poject.encoder.Client.<clinit>(Client.java:27)

...看起来log4j中发生了一些奇怪的事情。问题从第27行的Client类开始(这似乎是某种静态初始化)。它似乎试图获得Logger ...并陷入log4j实现中的某种“忙”循环中。


我怀疑这是Log4j中的一个错误。

  • 您正在使用Log4j 2.0(来自log4j包名称)。这仍处于“测试阶段”。你在前沿工作......

  • 堆栈跟踪中的行号似乎与beta-5或beta-6的源代码相匹配。最新版本的log4j 2.0是beta-9。尝试升级到可以开始使用的最新测试版。