如何在java中的同一个包和同一个目录中调用一个类?

时间:2017-06-13 12:39:22

标签: 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:错误:找不到符号                   DBConnect connect = new DBConnect();

我用谷歌搜索了一下,发现我可以在编译时从测试中移除.java扩展名,然后我就这样做了但是我得到了这个错误:

  

错误:仅在明确请求注释处理时才接受类名称和测试'   1错误

非常感谢所有回复:)

3 个答案:

答案 0 :(得分:1)

您需要从顶层包(位于文件系统树的根目录)运行编译器。所以cd到

cd C:\classes

然后运行

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

答案 1 :(得分:0)

我们需要使用-cp(或-classpath)选项来指定包com.yyy的基目录,以便找到DBConnect。

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

答案 2 :(得分:-2)

写在顶部

import duck.reg.pack.DBConnect;

在您要导入它的类中。

为什么不使用IntelliJ它会为你做这件事?