2013-05-02 30 views
0

在過去的3天中,我找不到針對此問題的單個答案。我需要能夠在我的servlet中使用自己的類。在servlet中使用我自己的類(Java/Tomcat/Linux)

我敢肯定,我的文件層次是正確的:

|-WEB-INF/ 
|---classes/ 
|------com/ 
|---------myProject/ 
|------------user/ 
|---------------User.java 
|---------------Location.java 
|---------------Comment.java 
|------------servlet/ 
|---------------DoComment.java 

由於User.java,Location.java和Comment.java在一個包中定義爲com.myProject.user我知道我應該去的主要根源Java項目,並編譯它們是這樣的:

/var/lib/tomcat6/webapps/ROOT/WEB-INF/classes$ sudo javac com/myProject/user/Location.java 
/var/lib/tomcat6/webapps/ROOT/WEB-INF/classes$ sudo javac com/myProject/user/User.java 
/var/lib/tomcat6/webapps/ROOT/WEB-INF/classes$ sudo javac com/myProject/user/Comment.java 

然而,當我在編輯使用類路徑javac不能識別其他物體(cannot find symbol錯誤)。

/var/lib/tomcat6/webapps/ROOT/WEB-INF/classes$ sudo javac -cp /usr/share/tomcat6/lib/servlet-api.jar com/myProject/servlet/DoComment.java 

請幫忙!

回答

0

問題解決了!

我爲com.myProject.user軟件包創建了一個JAR文件並將其保存在WEB-INF/lib中。比我用兩個用冒號分開的classpath編譯servlet。

下面是代碼:

/var/lib/tomcat6/webapps/ROOT/WEB-INF/classes$ sudo jar cvf myproject-user.jar com/myProject/user/User.class com/myProject/user/Location.class com/myProject/user/Comment.class 
/var/lib/tomcat6/webapps/ROOT/WEB-INF/classes$ mv myproject-user.jar ../lib/myproject-user.jar 
/var/lib/tomcat6/webapps/ROOT/WEB-INF/classes$ sudo service tomcat6 restart 
/var/lib/tomcat6/webapps/ROOT/WEB-INF/classes$ sudo javac -cp /usr/share/tomcat6/lib/servlet-api.jar:../lib/myproject-user.jar com/myProject/servlet/DoComment.java 

謝謝durron597kwikness你的答案被合併正確的答案。 祝您有愉快的一天。

0

從javac的手冊頁:

-cp類路徑
設置用戶類路徑,它將覆蓋CLASSPATH環境 變量用戶類路徑。如果未指定CLASSPATH或-class- 路徑,則用戶類路徑由當前的 目錄組成。

基本上,當你使用-cp標誌時,你正在覆蓋類路徑,所以你需要確保你在類路徑中指定了所有需要的類。類路徑條目的分隔符是:,它需要通配符。

+0

類路徑語法是依賴於操作系統的。在Unix上,喜歡分隔符是:(冒號,而不是分號)。 – daniero 2013-05-02 22:57:05

0

您正在將java源代碼放到需要編譯java類的位置。嘗試編譯源代碼,然後添加目前放置它們的類文件(.class vs .java)。

爲了達到這個目的,您必須確保這些類沒有依賴關係,並且您的類的包聲明與您將它們放置在其中的文件夾層次結構匹配。

即便如此,這通常不是Web項目的組合方式。將類打包到JAR中並將JAR放入WEB-INF/lib文件夾中會更好。

有關創建一個JAR的更多信息,檢查了這一點:http://docs.oracle.com/javase/tutorial/deployment/jar/build.html

相關問題