问题描述
我正在使用CKJM工具分析一个Java项目,该工具可以查看编译(.class)文件。我不断收到源自apache bcel的“找不到类”错误。我通过在其他事物中显式指定类路径来尝试其他事情,但是仍然遇到相同的问题。任何帮助将不胜感激。
<!-- The target responsible for the static alalysis of a desired project -->
<target name="ckjm" depends="init">
<taskdef name="ckjm" classname="gr.spinellis.ckjm.ant.CkjmTask">
<classpath>
<pathelement location="ckjm_ext.jar"/>
</classpath>
</taskdef>
<!-- Apply ckjm to the compiled files of the desired project -->
<ckjm outputfile="${dest.dir}/ckjmResults.xml" format="xml" classdir="com">
<include name="**/*.class"/>
</ckjm>
</target>
这是我得到的错误。
/Users/guribhangu/development/research/qatch/Offline_Tools/build.xml:106: java.lang.IllegalArgumentException: java.lang.classNotFoundException: Exception while looking for class com.google.common.base.Optional: java.io.IOException: Couldn't find: com/google/common/base/Optional.class
at gr.spinellis.ckjm.ClassVisitor.visitJavaClass(ClassVisitor.java:110)
at gr.spinellis.ckjm.ClassVisitor.start(ClassVisitor.java:92)
at gr.spinellis.ckjm.MetricsFilter.processClass(MetricsFilter.java:169)
at gr.spinellis.ckjm.MetricsFilter.processClass(MetricsFilter.java:159)
at gr.spinellis.ckjm.MetricsFilter.runMetricsInternal(MetricsFilter.java:197)
at gr.spinellis.ckjm.MetricsFilter.runMetrics(MetricsFilter.java:80)
at gr.spinellis.ckjm.ant.CkjmTask.execute(CkjmTask.java:150)
at org.apache.tools.ant.UnkNownElement.execute(UnkNownElement.java:292)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at org.apache.tools.ant.dispatch.dispatchUtils.execute(dispatchUtils.java:99)
at org.apache.tools.ant.Task.perform(Task.java:350)
at org.apache.tools.ant.Target.execute(Target.java:449)
at org.apache.tools.ant.Target.performTasks(Target.java:470)
at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1401)
at org.apache.tools.ant.Project.executeTarget(Project.java:1374)
at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
at org.apache.tools.ant.Project.executeTargets(Project.java:1264)
at org.apache.tools.ant.Main.runBuild(Main.java:827)
at org.apache.tools.ant.Main.startAnt(Main.java:223)
at org.apache.tools.ant.launch.Launcher.run(Launcher.java:284)
at org.apache.tools.ant.launch.Launcher.main(Launcher.java:101)
Caused by: java.lang.classNotFoundException: Exception while looking for class com.google.common.base.Optional: java.io.IOException: Couldn't find: com/google/common/base/Optional.class
at org.apache.bcel.util.AbstractClasspathRepository.loadClass(AbstractClasspathRepository.java:77)
at org.apache.bcel.util.MemorySensitiveClasspathRepository.loadClass(MemorySensitiveClasspathRepository.java:33)
at org.apache.bcel.classfile.JavaClass.getSuperClass(JavaClass.java:821)
at org.apache.bcel.classfile.JavaClass.getSuperClasses(JavaClass.java:833)
at gr.spinellis.ckjm.ClassVisitor.visitJavaClass(ClassVisitor.java:108)
... 23 more
Caused by: java.io.IOException: Couldn't find: com/google/common/base/Optional.class
at org.apache.bcel.util.Classpath.getClassFile(Classpath.java:666)
at org.apache.bcel.util.Classpath.getInputStream(Classpath.java:710)
at org.apache.bcel.util.Classpath.getInputStream(Classpath.java:688)
at org.apache.bcel.util.AbstractClasspathRepository.loadClass(AbstractClasspathRepository.java:75)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)