Java代码生成和运行时执行,Java.lang.NoClassDefFoundError
我在大学里用Java做一个项目。当我们达到一个开发状态,希望在一个专用的基准网格(由uni提供)上运行一些基准时,我们遇到了一些问题 程序本身生成代码并在运行时执行(我们在初始化时预编译一些代码),这是需要的,因为我们进行了一些优化 现在,如果我们将代码提交到作业队列并通过“ant Main”运行它,则会发生以下错误:Java代码生成和运行时执行,Java.lang.NoClassDefFoundError,java,code-generation,noclassdeffounderror,Java,Code Generation,Noclassdeffounderror,我在大学里用Java做一个项目。当我们达到一个开发状态,希望在一个专用的基准网格(由uni提供)上运行一些基准时,我们遇到了一些问题 程序本身生成代码并在运行时执行(我们在初始化时预编译一些代码),这是需要的,因为我们进行了一些优化 现在,如果我们将代码提交到作业队列并通过“ant Main”运行它,则会发生以下错误: [java] Exception in thread "main" java.lang.NoClassDefFoundError: javax.tools.ToolProvid
[java] Exception in thread "main" java.lang.NoClassDefFoundError: javax.tools.ToolProvider
[java] at propnet.PropNetComputations.compilePropnet(PropNetComputations.java:72)
[java] at propnet.PropNetStateMachine.initialize(PropNetStateMachine.java:145)
[java] at propnet.PropNetStateMachine.initialize(PropNetStateMachine.java:109)
[java] at statemachine.StateMachineGamer.metaGame(StateMachineGamer.java:177)
[java] at core.request.StartRequest.process(StartRequest.java:47)
[java] at core.GamePlayer.run(GamePlayer.java:82)
[java] at core.Main.main(Main.java:34)
编译似乎没有任何问题,但由于NoClassDefFoundError,执行似乎失败了。起初,我们认为这可能是一个版本问题,所以我们测试了各种Java版本(sun 1.6x、1.7x和openjdk 1.6x),但版本本身似乎没有问题
你知道怎么解决这个问题吗?提前感谢您提供的任何帮助 我将尝试通过以下两种方式来解决这个问题,顺序如下
希望这有帮助 您是否尝试过使用JDK而不是JRE来运行应用程序。据我所知,JRE不包括
javax.tools.*
类,但JDK包括。您还可以尝试手动将tools.jar
添加到类路径中。NoClassDefFound仅仅意味着程序或库中存在依赖于类路径中不存在的类的类。如果您不直接从程序中引用这个类,编译就可以了
在您的情况下,类路径中可能缺少tools.jar。添加它,一切都会正常工作。Ant构建中的类路径设置是什么,基准网格的主机操作系统是什么?