java - 类路径规范

标签 java

我有两个程序 一个在目录/home/redhat/Documents/java1/j1

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 的实例 请帮忙。

最佳答案

你的类路径是错误的。您应该指向任何已声明包的根目录:

javac -classpath /home/redhat/Documents/java1 Demo2.java

我错过的其他前一步是 Demo1 类的编译。 Javac 编译器将查找“.class”文件,而不是“.java”文件。所以在执行之前你需要:

javac Demo1.java

作为一项改进,我建议您在包“j”而不是默认包中声明您的第二个类,因为将根源路径放在另一个已经包含包的根路径中并不是一个好主意。

关于java - 类路径规范,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3649553/

相关文章:

java - 使用 Selenium 3.0 启动 Firefox 46.0.1 时出现 IllegalStateException

java - 使用吗啡按字符串列表上的元素查询 MongoDB

java - 如何根据一些规则按降序创建优点列表?

java - spring+springmvc+mybatis 未提交

java - 通过Java SDK在AWS上使用Hadoop创建数据库

java - 验证错误消息中的 Thymeleaf 单引号

java - 为什么我的 JTable 没有显示?

java - 命令设计模式在此用例中的应用?

运行appium脚本时出现java.lang.ClassNotFoundException

java - 如何向资源 ID 添加计数