gpt4 book ai didi

java - 设置我的 Java 环境。 jar /类路径

转载 作者:行者123 更新时间:2023-11-30 04:18:57 25 4
gpt4 key购买 nike

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

这就是我所做的。

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

package home.kraken.Desktop.A;

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

在桌面上,我有另一个文件夹 B 和文件 Bb.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] 的值,现在对于我创建的每个文件,如果我想导入其他类,那么我将导入 RELATIVE_ADDRESS_TO_DESKTOP
  4. 如何设置 CLASSPATH 的值?
  5. jar.到底是什么?我知道它是类文件的集合,但是我是否使用某些命令显式创建 jar 文件或者......它是如何工作的?

谢谢。

编辑

这就是我所做的

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

导出 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中运行程序时,它说]

Exception in thread "main" java.lang.NoClassDefFoundError: Bb (wrong name: B/Bb) at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:634) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader.defineClass(URLClassLoader.java:277) at java.net.URLClassLoader.access$000(URLClassLoader.java:73) at java.net.URLClassLoader$1.run(URLClassLoader.java:212) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:205) at java.lang.ClassLoader.loadClass(ClassLoader.java:321) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294) at java.lang.ClassLoader.loadClass(ClassLoader.java:266) Could not find the main class: Bb. Program will exit.

这里发生了什么?

编辑2

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

有人可以解释一下发生了什么吗?

最佳答案

1) How do I know what my CLASSPATH is?

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

2) In the first statement, I have written the complete address of the folder it is in. Even then it wont find it? Does my project has to be pointed by CLASSPATH only?

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

3) Say my CLASSPATH points to Desktop [i.e. I set the value of CLASSPATH], now for every file I create, if I want to import some other class, then I will import RELATIVE_ADDRESS_TO_DESKTOP?

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

4) How do I set the value of CLASSPATH?

导出 CLASSPATH="$CLASSPATH:textToAddToClasspath"

5) What exactly is jar. I understand it is the collection of Class FIles but do I explicitly make a jar file using some command or ...How does it work?

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

关于java - 设置我的 Java 环境。 jar /类路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17616962/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com