Java:在线程中实例化外部jar的类上的ClassNotFoundException

时间:2012-02-01 07:29:16

标签: java multithreading jar

我已经创建了一个库并将其导出到我试图导入到我的eclipse项目并使用的jar文件中。 Eclipse说没有问题,但是当我调试应用程序时,它进入新线程然后去实例化对象,然后抛出ClassNotFoundException

  

ClassNotFoundException(Throwable)。(String,Throwable)行:217   ClassNotFoundException(Exception)。(String,Throwable)line:not   available ClassNotFoundException。(String)line:not available
  URLClassLoader $ 1.run()行:不可用
  AccessController.doPrivileged(的PrivilegedExceptionAction,   AccessControlContext)行:不可用[native method]   Launcher $ ExtClassLoader(URLClassLoader).findClass(String)行:不行   可用的Launcher $ ExtClassLoader.findClass(String)行:不行   可用的Launcher $ ExtClassLoader(ClassLoader).loadClass(String,   boolean)line:not available
  Launcher $ AppClassLoader(ClassLoader).loadClass(String,boolean)行:   不可用的Launcher $ AppClassLoader.loadClass(String,boolean)   line:not available
  Launcher $ AppClassLoader(ClassLoader).loadClass(String)行:不行   可用的HKServiceListener.run()行:33 Thread.run()行:不行   可用

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

为什么不认识我的班级,我该怎么做?

3 个答案:

答案 0 :(得分:1)

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

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

例如:

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

答案 1 :(得分:0)

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

如果这不起作用,请尝试在run_configurations选项中明确地在jar路径选项中包含jar文件。

答案 2 :(得分:0)

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