Java:ClassNotFoundException来自正在线程中实例化的外部jar的类

Java:ClassNotFoundException来自正在线程中实例化的外部jar的类,java,multithreading,jar,Java,Multithreading,Jar,我制作了一个库,并将其导出到一个jar文件中,我正试图将该文件导入eclipse项目并使用它。Eclipse说没有问题,但当我调试应用程序时,它进入新线程并实例化对象,但随后抛出一个ClassNotFoundException ClassNotFoundException(Throwable)。(字符串,Throwable)行:217 ClassNotFoundException(异常)。(字符串,可丢弃)行:非 可用ClassNotFoundException.(字符串)行:不可用 URLCl

我制作了一个库,并将其导出到一个jar文件中,我正试图将该文件导入eclipse项目并使用它。Eclipse说没有问题,但当我调试应用程序时,它进入新线程并实例化对象,但随后抛出一个
ClassNotFoundException

ClassNotFoundException(Throwable)。(字符串,Throwable)行:217 ClassNotFoundException(异常)。(字符串,可丢弃)行:非 可用ClassNotFoundException.(字符串)行:不可用
URLClassLoader$1.run()行:不可用
AccessController.doPrivileged(PrivilegedExceptionAction, AccessControlContext)行:不可用[本机方法] 启动器$ExtClassLoader(URLClassLoader)。findClass(字符串)行:非 可用启动器$ExtClassLoader.findClass(字符串)行:不可用 可用启动器$ExtClassLoader(ClassLoader).loadClass(字符串, 布尔值)行:不可用
启动器$AppClassLoader(ClassLoader).loadClass(字符串,布尔值)行: 不可用的启动器$AppClassLoader.loadClass(字符串,布尔值) 行:不可用
启动程序$AppClassLoader(ClassLoader).loadClass(字符串)行:非 可用的HKServiceListener.run()行:33线程。run()行:不可用 可用

它找不到的类是
com.snow.IO.SnowTcpServer
。我已经在我的类路径中包含了外部jar,并且没有编译错误。它只在运行时抛出。我甚至在文件的顶部有
import com.snow.IO.SnowTcpServer


为什么它不能识别我的类以及如何让它识别?

您的类路径有问题没有其他原因导致classload无法在类中找到文件,请尝试在没有eclipse的情况下使用命令行手动运行类(编译类)

java -cp [your jars separated with ";" - widows or ":" - *nix] com.your.Class
例如:

java -cp /libs/lib1.jar:/libs2/* com.your.Class

如果您正在运行企业应用程序,请确保Jar也可用于部署。这需要额外配置。
对于J2SE应用程序,请检查您的jar是否在run_配置属性的类路径选项卡中可见。


如果这不起作用,那么请尝试在run\u configurations选项中显式地包含jar file in class path选项。

事实证明,该错误仅是在使用调试器时引起的。这与以下事实有关,即我要进入的代码是在一个外部jar文件中,而不是在我的源代码中

你能提供你用来运行的命令吗?我在Eclipse上运行它。我刚刚点击了RunasJava应用程序按钮。当我尝试此操作时,我在线程“main”Java.lang.NoClassDefFoundError:com/hakyn/srv/HKListener中得到了
异常,这是我的main方法的类。我使用了:
C:\Users\ryan\workspace\hakyn server>java-cp Snow.jar;mongo-2.7.2.jar;mysql-connector-java-5.1.1.jar;C:/Users/ryan/workspace/hakyn server/src/*com.hakyn.srv.hklister
因为您应该将类路径指向已编译的类(.class),而不是源代码:C:/Users/ryan/workspace/hakyn server/src/Ahh,我尝试使用bin目录。我仍然得到相同的错误。当我查看run\u配置时,jar已经在我的类路径中。