2017-06-13 226 views
0

基本上我有:如何在java中調用同一個包和相同目錄中的類?

package duck.reg.pack; 

import java.io.IOException; 
import javax.servlet.ServletException; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
public class Test extends HttpServlet { 
    private static final long serialVersionUID = 1L; 
    public Test() { 
     super(); 
    } 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     response.getWriter().append("Served at: ").append(request.getContextPath()); 
     DBConnect DB = new DBConnect(); 
    } 
} 

類調​​用在Test.java:

package duck.reg.pack; 

import java.io.IOException; 
import javax.servlet.ServletException; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

public class DBConnect { 
    private Connection con; 
    private Statement st; 

    public DBConnect(){ 
     System.out.println("Hi there!"); 
     return; 
    } 
} 

兩個文件目錄位置:

C:\classes\duck\reg\pack\Test.java + DBConnect.java 

的問題是,當我編譯程序命令:

C:\classes\duck\reg\pack>javac -cp "C:\Users\Unknown\JavaEEWorkspace\lib\*" Test.java 

此錯誤是拋出:

Test.java:16: error: cannot find symbol DBConnect connect = new DBConnect();

我GOOGLE了一點,我發現在編譯它,我可以從測試中刪除.java擴展和我這樣做了,但後來我得到這個錯誤:

error: Class names, 'Test', are only accepted if annotation processing is explicitly requested 1 error

所有答覆都十分讚賞:)

+0

您需要告訴編譯器所有相關的文件。它沒有找到DBConnect.java文件。 –

回答

-2

寫在上面

import duck.reg.pack.DBConnect; 

您想要導入它的類。

爲什麼不使用IntelliJ它會爲你做?

+0

感謝您的回覆,但沒有工作 –

+2

在同一個包中的類不需要導入。他沒有將BDConnect.java文件指定給編譯器。 –

1

您需要從頂層包(位於文件系統樹的根目錄)運行編譯器。所以cd到

cd C:\classes 

和運行

javac -cp "C:\Users\Unknown\JavaEEWorkspace\lib\*" duck\reg\pack\*.java 
+0

您不需要從頂層目錄運行該程序。這就是爲什麼我們有類路徑選項。爲什麼你沒有使用classpath和sourcepath顯示正確的技巧? –

+0

而「頂」包(你的意思是_default_包嗎?)不是'/'。 '/'是一個目錄,而不是一個包。 –

0

我們需要使用-cp(或-classpath)選項來指定包com.yyy的基本目錄,以查找數據庫連接。

javac -cp "d:\lib\*" d:\myJavaProject\pkg\*.java 
+0

只要未編譯DBConnect.java,這將無濟於事。更糟糕的是,如果自上次編譯以來DBConnect.java已發生更改,則可能會導致開發人員無法預期的影響。 –

+0

是你right.so需要編譯所有文件。 –

相關問題