java - 调用 ObjectInputStream.readObject();从线程 run() 调用时,Java 中的方法抛出 ClassNotFoundException;

标签 java multithreading tomcat

我正在尝试在 tomcat 中实现一个线程。基本上它用于处理 Java 服务器套接字协议(protocol)。该线程在 tomcat 应用程序之外工作正常,但是当我尝试调用另一个类时,它是使用该线程 run() 的方法,它给了我 java.lang.ClassNotFoundException: com.app.util.Data 这是错误的完整版本:

java.lang.ClassNotFoundException:  com.app.util.Data
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1718)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1569)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:264)
    at java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:622)
    at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1593)
    at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1514)
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1750)
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)
    at com.app.util.pack.ServerClientHandler.run(ServerClientHandler.java:52)

类文件 (com.app.util.Data) 已正确放置在指定路径中并在 com.app.util.pack.ServerClientHandler 中导入。我知道有很多关于 ClassNotFoundException 错误的问题,但在我的情况下,文件正确放置在路径中,并且编译器或 IDE 绝对没有抛出任何错误。是否有任何特定原因导致 Tomcat 服务器中的线程 run() 方法为可用类文件抛出 ClassNotFoundException,是否有任何其他方法可以使用在 tomcat 中正常工作的线程?

我知道这完全是一个没有任何线索的菜鸟问题,但我没有在网上找到任何答案。 再次感谢!


更新:

伙计,我已经解决了这个问题。实际上这不是 run() 方法的问题。 ObjectInputStream, readObject() 给我错误。我只需要在服务器和客户端中保留相同的包名称,当然还要序列化它。好在现在已经解决了。谢谢大家的帮助:) 非常感谢!

最佳答案

请记住,您不能从服务器类加载器加载的类中调用应用程序类加载器加载的类。

你可以在这里阅读一个很好的解释:

http://tomcat.apache.org/tomcat-6.0-doc/class-loader-howto.html

关于java - 调用 ObjectInputStream.readObject();从线程 run() 调用时,Java 中的方法抛出 ClassNotFoundException;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22155957/

相关文章:

java - Hudson JDepend 插件不起作用

swift - 在 iOS 中将图像转换为视频而不锁定 UI 线程 (Swift)

java - 并发编程。使用机器人卡雷尔

java - 无法在 Tomcat 8.0.2 上的 Netbeans 中部署我的 Web 应用程序(出现以下错误)

java - 为什么接口(interface)不支持静态方法?

java - Vim - 自动完成 Java

Java - 将文件读入数组并随后使用该数组的问题

java - 实例级同步

java - 在 Docker 容器中部署 WAR 文件

javascript - 使用 IDE 工具创建网站并在 Web 服务器上进行测试