尽管jar在类路径中,但面向java的noclassdeffounderror(动态编译)

rsaldnfx  于 2021-07-06  发布在  Java
关注(0)|答案(0)|浏览(273)

在tomcat服务器中,在运行时,我读取java类文件,并使用内部使用javacompiler的inmemoryjavacompiler库动态编译它们。
代码示例-

InMemoryJavaCompiler.newInstance()
                       .useOptions("-parameters", 
                          "-classpath", sb.toString(),  
                          "-Xlint:unchecked")
                       .compile(sourceCodeClassName,
                          sourceCode.toString());

这里sb(stringbuilder)表示从webinf/lib目录中读取的jar,用冒号分隔。
该代码适用于以下场景:
如果上面的编译代码保存在一个独立的类文件中,那么相关的库就设置在类路径中。编译成功。
我打印了jar文件,也就是说,我分别打印了sb值并复印了一份。我在终端中手动运行javac-classpath<sourcecode.java>。编译成功。
代码在以下情况下不起作用:
答。当上面的代码片段作为独立程序添加到eclipse中时,我遇到了源代码所实现的接口的noclassdeffound错误。
b。在tomcat中,相关的jar出现在contextname/web inf/lib/中,此外,jar还添加在-useoptions类路径中。即使这样,我也面临着源代码实现的接口noclassdeffound错误。
注意:lib目录或classpath值中没有jar的重复副本或jar的多个版本。该接口是hyperledger结构中存在的收缩接口

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题