Demo1.java
package j1;
public class Demo1
{
public void print()
{
System.out.println("hi");
}
}
和目录/ home / redhat / Documents / java1 / j中的另一个
Demo2.java
import j1.*;
public class Demo2
{
Demo2()
{
Demo1 d=new Demo1();
}
}
当我说
javac -classpath /home/redhat/Documents/java1/j1 Demo2.java
我收到以下错误
Demo2.java:2: package j1 does not exist
import j1.*;
^
Demo2.java:7: cannot access Demo1
bad class file: /home/redhat/Documents/java1/j1/Demo1.java
file does not contain class Demo1
Please remove or make sure it appears in the correct subdirectory of the classpath.
Demo1 d=new Demo1();
^
2 errors
我想在Demo2中访问Demo1的实例 请帮忙。
答案 0 :(得分:4)
你的类路径错了。您应该指向任何声明的包的根:
javac -classpath /home/redhat/Documents/java1 Demo2.java
我想念的其他前一步是编译Demo1类。 Javac编译器将查找“.class”文件,而不是“.java”文件。所以在执行之前你需要:
javac Demo1.java
作为一种改进,我建议你在包“j”而不是默认包中声明你的第二个类,因为在另一个已经包含包的根路径中有根源路径并不是一个好主意。
答案 1 :(得分:0)
javac可执行文件的命令行中指定的classpath选项用于定义the user classpath location,编译器可以在其中找到类型的已编译类文件。换句话说,编译器需要在用户类路径中编译.class文件。
在您的情况下,您有一个源类文件,在这种情况下,您应该使用javac的sourcepath选项:
javac -sourcepath /home/redhat/Documents/java1 Demo2.java
javac将在用户类路径下找到j1包,从而解析类型。