当我尝试加载外部java文件时,我得到NoClassDefFoundError

当我尝试加载外部java文件时,我得到NoClassDefFoundError,java,noclassdeffounderror,Java,Noclassdeffounderror,所以这里的情况是。。。我尝试从java文件中创建一个类对象(使用其上的getDeclaredConstructors方法),在库net.openhft.compiler的帮助下加载该文件,该行如下所示:class clazz=CompilerUtils.CACHED\u compiler.loadFromJava(文件名,IOUtils.toString(新文件读取器(文件))。当我在Intellij中运行应用程序时,它完全可以正常工作,但当我用应用程序制作一个jar并尝试执行相同操作时,我会收

所以这里的情况是。。。我尝试从java文件中创建一个类对象(使用其上的getDeclaredConstructors方法),在库net.openhft.compiler的帮助下加载该文件,该行如下所示:
class clazz=CompilerUtils.CACHED\u compiler.loadFromJava(文件名,IOUtils.toString(新文件读取器(文件))。当我在Intellij中运行应用程序时,它完全可以正常工作,但当我用应用程序制作一个jar并尝试执行相同操作时,我会收到错误消息:

线程“JavaFX应用程序线程”java.lang.NoClassDefFoundError中出现异常:net/openhft/compiler/CompilerUtils 位于com.company.Modules.ChangeVariableNameModule.storeConstructors(ChangeVariableNameModule.java:530) 位于com.company.Modules.ChangeVariableNameModule.changeVariableNames(ChangeVariableNameModule.java:85) 位于com.company.Obfuscator.obfuscate(Obfuscator.java:53) 位于com.company.View$7.handle(View.java:242) com.company.View$7.handle(View.java:210) 位于com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(未知 (来源) 位于com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(未知 (来源) 位于com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(未知 (来源) 位于com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(未知 (来源) 位于com.sun.javafx.event.basicEventDispatchEvent(未知 (来源) 位于com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(未知 (来源) 位于com.sun.javafx.event.basicEventDispatchEvent(未知 (来源) 位于com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(未知 (来源) 位于com.sun.javafx.event.basicEventDispatchEvent(未知 (来源) 位于com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(未知 (来源) 位于com.sun.javafx.event.EventUtil.fireEventImpl(未知源) 位于com.sun.javafx.event.EventUtil.firevent(未知源) 位于javafx.event.event.fireEvent(未知源) 位于javafx.scene.Node.fireEvent(未知源) 位于javafx.scene.control.Button.fire(未知源) 在com.sun.javafx.scene.control.behavior.ButtonBehavior.mouseReleased上(未知 (来源) 位于com.sun.javafx.scene.control.skin.BehaviorSkinBase$1.handle(未知 (来源) 位于com.sun.javafx.scene.control.skin.BehaviorSkinBase$1.handle(未知 (来源) 在com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(未知)上 (来源) 位于com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(未知 (来源) 位于com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(未知 (来源) 位于com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(未知 (来源) 位于com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(未知 (来源) 位于com.sun.javafx.event.basicEventDispatchEvent(未知 (来源) 位于com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(未知 (来源) 位于com.sun.javafx.event.basicEventDispatchEvent(未知 (来源) 位于com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(未知 (来源) 位于com.sun.javafx.event.basicEventDispatchEvent(未知 (来源) 位于com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(未知 (来源) 位于com.sun.javafx.event.EventUtil.fireEventImpl(未知源) 位于com.sun.javafx.event.EventUtil.firevent(未知源) 位于javafx.event.event.fireEvent(未知源) 位于javafx.scene.scene$MouseHandler.process(未知源) 位于javafx.scene.scene$MouseHandler.access$1500(未知源) 位于javafx.scene.scene.impl_processMouseEvent(未知源) 位于javafx.scene.scene$ScenePeerListener.mouseEvent(未知源) 位于com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(未知 (来源) 位于com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(未知 (来源) 位于java.security.AccessController.doPrivileged(本机方法) 位于com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$354(未知 (来源) 位于com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(未知 (来源) 位于com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(未知 (来源) 位于com.sun.glass.ui.View.handleMouseEvent(未知源) 位于com.sun.glass.ui.View.notifyMouse(未知源) 在com.sun.glass.ui.win.WinApplication.\u runLoop(本机方法) 在com.sun.glass.ui.win.WinApplication.lambda$null$148(未知来源) 在java.lang.Thread.run(未知源代码)处,由以下原因引起:java.lang.ClassNotFoundException:net.openhft.compiler.CompilerUtils 位于java.net.URLClassLoader.findClass(未知源) 位于java.lang.ClassLoader.loadClass(未知源) 位于sun.misc.Launcher$AppClassLoader.loadClass(未知源) 位于java.lang.ClassLoader.loadClass(未知源) ... 52多

我读了一些关于这个异常的资料,我是否必须将类路径设置为我的应用所在的位置?如果是的话,在java中也可以这样做吗可能是Runtime.exec()的问题

还是有更好的方法?我已经尝试了很多方法,但我不知道如何解决这个问题


谢谢你的帮助

jar中是否包含所有必需的类?(您可以打开它以查看内容。)