簡體   English   中英

調用ObjectInputStream.readObject(); 從線程run()調用時,java中的方法拋出ClassNotFoundException;

[英]Invoking ObjectInputStream.readObject(); method in java is throwing ClassNotFoundException when called from thread run();

我正在嘗試在tomcat中實現線程。 基本上,它用於處理Java服務器套接字協議。 該線程在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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM