2013-04-09 23 views
0

我有一個項目,我正在使用start.HTML頁面來調用JavaScript調用,它調用一個java servlet Enquiry.java,並調用一個php文件myPhp.php。這個php文件從一個着名的音樂網站上抓取數據,並以XML(文件或字符串,我的選擇)的形式將數據發送回Enquiry.java。 所以,我必須在php頁面上有這個xml數據,使得myPhp.php像一個xml文件,我的servlet用來從中提取數據。「main」線程出現錯誤,NoClassDefFound:Java servlet中的類名..如何運行類文件?

現在,我必須在putty上編譯並運行我的servlet,並在瀏覽器上運行html,然後執行其他操作。 我能夠完美地編譯我的文件。 我已經將CLASSPATH設置爲放置所有罐子的〜/ tomcat/jakarta/common/lib。 我做>javac -classpath $CLASSPATH/servlet.jar:$CLASSPATH/json-rpc-1.0.jar Enquiry.java 編譯好。

現在,我必須有一個Enquiry.class的地方(我認爲在我的類路徑中) 我停止tomcat。將這個類文件轉移到我的.java文件所在的位置。啓動tomcat。 現在,我需要運行它。

我做java -classpath $CLASSPATH/servlet.jar:$CLASSPATH/json-rpc-1.0.jar Enquiry 我得到:Error in "main" thread, NoClassDefFound : Enquiry 我只有在當前文件夾。我仍然得到一個異常 我想知道什麼是錯的?

如果我添加一個。詢價前,我得到:Error in "main" thread, NoClassDefFound : javax.servlet.http.httpresponse exception
如果我添加一個java -cp .:$CLASSPATH...然後我得到:Error in "main" thread, NoClassDefFound : Main exception

請幫我解決我的類路徑和順利運行我的Java Servlet。

+2

在Web應用程序中運行一個servlet時,不應該混淆Java類路徑設置。只需將其構建爲WAR文件並將其放入servlet容器的webapps文件夾即可。相關的jar文件應該放入WAR中的WEB-INF/lib中。 – NilsH 2013-04-09 10:18:29

+0

爲什麼不把你的類文件和json-rpc-1.0.jar一起打包到一個WAR文件中並將其部署到Tomcat的webapp目錄中? – mthmulders 2013-04-09 10:19:25

回答

0

創建servlet時,通常(如果不是總是)將其創建爲包裝爲WAR文件的Web應用程序的一部分。要運行您的servlet,您需要打包的WAR文件並將其放入您正在使用的servlet容器的部署文件夾中。由於您單獨使用Tomcat,因此可能位於tomcat/webapps文件夾中。 This tutorial是開始學習開發和部署Web應用程序的好地方。您唯一需要啓動的Java進程就是您的servlet容器。

+0

我沒有使用WAR文件。我只想在putty上編譯和運行servlet,並在瀏覽器中打開我的html,將數據添加到表單中,將它發送到servlet,servlet調用php,php從say imdb.com中提取數據,將它放入xml表單,然後servlet提取xml來自php的數據,使其成爲一個JSON對象,並返回到HTML文件中的xmlhttp對象,並以表格形式顯示它。 – 2013-04-09 18:22:25

+0

你的意思是膩子,如在Windows的SSH客戶端?或者,你的意思是碼頭,就像在servlet容器中一樣?我不確定你想要做什麼,但是一個servlet容器不僅僅是classpath。這也是請求和響應處理,所以試圖在servlet容器外部單獨運行它並不是我會推薦的,如果可能的話。 – NilsH 2013-04-09 19:11:50

+0

是的,ssh客戶端。在我在瀏覽器上運行我的html來填充表單之前,我必須在後端編譯並運行我的servlet,以便我的html可以調用它。我能夠編譯java文件。但是,它只是在運行時無法識別我的.class文件。拋出一個找到的NoClassDefinition。這意味着我在運行時不能處理我的類路徑,對吧? – 2013-04-09 19:22:56

相關問題