1

所以我开始使用Java。我目前在 Ubuntu 平台上。我安装了 jdk,它在初始阶段运行良好。然后我转向“访问控制”一章,它开始谈论 CLASSPATH 和 jars。

这就是我所做的。

在我的桌面上,我创建了一个文件夹A,并在其中创建了文件Aa.java

package home.kraken.Desktop.A;

class Aa{
    public doSome(){
        System.out.println("AA");
    }
}

在桌面上我有另一个文件夹BBb.java文件

package home.kraken.Desktop.B;

import  home.kraken.Desktop.A.*;
class Bb{
    public static void main(String[] args){

        Aa a = new Aa();
        a.doSome();
    }
}

现在,当我运行 Bb.java 时,出现找不到 Aa 的错误。

好的,我知道 CLASSPATH 是一些变量,它提供了搜索其他类的位置。现在这是我的问题

  1. 我怎么知道我的 CLASSPATH 是什么?
  2. 在第一个语句中,我已经写了它所在文件夹的完整地址。即使这样它也找不到它?我的项目是否必须仅由 CLASSPATH 指向?
  3. 假设我的 CLASSPATH 指向桌面 [即我设置 CLASSPATH 的值],现在对于我创建的每个文件,如果我想导入其他类,那么我会import RELATIVE_ADDRESS_TO_DESKTOP吗?
  4. 如何设置 CLASSPATH 的值?
  5. 究竟是什么罐子。我知道它是类文件的集合,但是我是否使用某些命令明确地制作了一个 jar 文件或者......它是如何工作的?

谢谢。

编辑

所以这就是我所做的

我的类路径最初是空的,所以我做了

export CLASSPATH="$CLASSPATH:/home/kraken/Desktop"

现在在文件夹 Desktop/A 内,我有

package A;

public class Aa{
    public void doSome(){
        System.out.println("AA");
    }
}

在文件夹 Desktop/B 里面,我有

package B;

import  A.*;
class Bb{
    public static void main(String[] args){

        Aa a = new Aa();
        a.doSome();
    }
}

现在,我愿意javac Aa.java

javac Bb.java

当我做java Bb[ 里面的文件夹 Desktop/B 运行程序时,它说 ]

266) 找不到主类:Bb。程序将会退出。

这里发生了什么?

编辑 2

当我执行java B.Bb[Inside Folder B.Bb] 时,它会打印出来AA

如果有人可以解释发生了什么?

4

2 回答 2

2

1) 我怎么知道我的 CLASSPATH 是什么?

它是一个系统环境变量。在 UNIX/Linux 上,您键入“echo $CLASSPATH”来查看它的设置。

2)在第一个语句中,我已经写了它所在文件夹的完整地址。即使这样它也找不到它?我的项目是否必须仅由 CLASSPATH 指向?

那是一个包名。它告诉 Java 在类路径中查找的位置。通常,包名与文件的绝对路径不匹配。例如,假设我的文件系统 /user/local/com/stackoverflow/foo 上有一个类。Java 需要将类路径设置为 /usr/local,以便它知道在哪里查找该类。同样,文件可能在 jar 中,并且类路径说要在 jar 中查找。

3)假设我的CLASSPATH指向桌面[即我设置CLASSPATH的值],现在对于我创建的每个文件,如果我想导入其他类,那么我将导入RELATIVE_ADDRESS_TO_DESKTOP?

是的。您的 CLASSPATH 指向您的包语句的“根”。

4) 如何设置 CLASSPATH 的值?

导出 CLASSPATH="$CLASSPATH:textToAddToClasspath"

5)究竟是什么罐子。我知道它是类文件的集合,但是我是否使用某些命令明确地制作了一个 jar 文件或者......它是如何工作的?

是的,jar 是类文件的集合。您可以使用“jar -cvf jarname.jar *.class”等创建它

于 2013-07-12T14:18:36.200 回答
0

将 Aa.java 和 Bb.java 放在同一个文件夹中。我相信JDK包是默认设置的。因此,如果您将这两个文件放在同一个文件夹中,您所要做的就是将类路径设置为您拥有所有内容的文件夹。

java -classpath /home/user/myprogram org.mypackage.AA.java

或者你的文件结构是什么^^

这应该让你的程序工作

于 2013-07-12T14:27:11.490 回答