gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 23:38:43 25 4
gpt4 key购买 nike

我正在尝试在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com