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)
答案 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。尝试升级到可以开始使用的最新测试版。