无法加载类文件

时间:2015-01-30 06:33:27

标签: java java-home

当我尝试运行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

任何人都知道如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

尝试使用像

这样的java可执行文件的绝对路径
$ /usr/lib/jvm/java-1.7.0-openjdk.x86_64/bin/java -cp ...

可能是soley java执行的旧版本不包含ConcurrentMap