繁体   English   中英

jar文件无法在Java 7中运行,但可以在Java 6中运行

[英]jar file wont run in java 7 but works in java 6

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版本

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)

是否使用任何CPU?

要获取线程转储,请发送以下信号:

杀死-3

(线程转储将被写入stdout)。

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

java -jar jarname.jar the.main.Class

基于线程堆栈转储...

"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程序包名称中)您正在使用Log4j 2.0。 这仍然处于“测试版”中。 您正在努力工作...

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM