【发布时间】:2015-01-30 06:33:26
【问题描述】:
当我尝试运行 Java 程序时遇到以下运行时异常
Exception in thread "main" java.lang.RuntimeException: Could not load classfile: java.util.concurrent.ConcurrentMap
at soot.coffi.Util.resolveFromClassFile(Util.java:75)
at soot.CoffiClassSource.resolve(CoffiClassSource.java:39)
at soot.SootResolver.bringToHierarchy(SootResolver.java:215)
at soot.SootResolver.bringToSignatures(SootResolver.java:239)
at soot.SootResolver.bringToBodies(SootResolver.java:280)
at soot.SootResolver.processResolveWorklist(SootResolver.java:150)
at soot.SootResolver.resolveClass(SootResolver.java:124)
at soot.Scene.tryLoadClass(Scene.java:417)
at soot.Scene.loadBasicClasses(Scene.java:990)
at soot.Scene.loadNecessaryClasses(Scene.java:1061)
at soot.Main.run(Main.java:167)
at soot.Main.main(Main.java:141)
使用的命令是
java -cp soot-csi.jar:../lib/soot-2.5.0.jar blah.soot.SomeClass
由于 ConcurrentMap 是基本的 JRE 类之一,我认为这是由于 rt.jar 文件无法在 jdk 中找到/存在造成的。所以我检查了我的$JAVA_HOME 变量,它确实指向了一个 JDK,其中 rt.jar 位于 lib 文件夹中。所以结构是这样的。
/usr/lib/jvm/java-1.7.0-openjdk.x86_64/lib/rt.jar
where $JAVA_HOME = /usr/lib/jvm/java-1.7.0-openjdk.x86_64
有人知道如何解决这个问题吗?
【问题讨论】:
-
请添加完整的堆栈跟踪和您用来启动程序的命令。
-
您使用的是什么版本的 Java?你的主要课程是什么 - 带有 static void main(String[] args) 的课程
-
尝试在 Java 1.7 上运行相同的程序(如果您使用的是 Java 8)。
-
我尝试将 $JAVA_HOME 变量设置为 Java 1.7 JDK 安装,如果这就是您的意思。但是,我仍然遇到同样的错误。
-
尝试运行
/usr/lib/jvm/java-1.7.0-openjdk.x86_64/bin/java -cp ...可能是一个单独的java执行旧版本。