gpt4 book ai didi

java - 关于JAVA和Linux的一些基本概念 : PATH variable in LINUX and class location by JVM

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:24:04 27 4
gpt4 key购买 nike

我是 Java 编程和 Linux 环境的新手。而且我发现很难理解什么是类路径、JVM 如何定位类以及 JAVA API 和许多其他东西。

例如,今天我写了两个简单的类 1)employee 和 2)employeetest,并将它们放在同一个文件夹中。(employeetest 有“main”方法并在其代码中使用 employee。)我编译了 employeetest,然后使用“javac”命令执行了它。我看到,文件夹中也添加了 employee.class。那么这是否意味着 JVM 会自动编译所有执行所需的文件?

然后我把employee类放到了当前目录之外,然后尝试执行employeetest。现在我收到关于 ClassNotFound 的错误!!为什么会这样?为什么 JVM 不在其他目录中搜索 employee 类?

我放置员工的目录也在我的类路径或我的 linux 中的“PATH”上?从技术上讲,它应该搜索 PATH 中的其他目录吗?

如果我错了,请指正,因为我在网上看了很多东西,我无法清楚地理解这些概念?

那么 JVM 在哪里搜索类?在带有“main”的类所在的同一目录中?

在我的机器上,当我执行 echo $JAVA_HOME 时,没有任何打印。但我的 javajavac 命令仍然可以正常执行吗?为什么会这样? $JAVA_HOME 是什么意思? JDK位于哪里?它的作用是什么?

最佳答案

PATH 和类路径是两个非常非常不同的东西。 PATH 是操作系统(在本例中为 Linux 发行版,但 Windows 使用相同的环境变量)用于查找可执行文件 的机器特定环境变量。可执行文件包括二进制程序和 Linux 中的一些脚本文件。除非您指定 javac 的完整绝对路径或 javac 在当前目录中,否则 PATH 是 Linux 查找 javac 的方式 二进制。

另一方面,类路径是特定于 Java 的。它可以设置为环境变量 CLASSPATH 或作为 java 可执行文件的参数,如下所示:

java -classpath /some/dir:/some/other/dir myprogram

除了内置 API 之外,这是一组目录,JVM 在其中查找类文件或包(具有包含类文件的特定结构的文件夹)。

是的,如果 Java 编译器可以找到依赖的源文件并确定匹配的类文件丢失或过时,它就会编译这些文件。如果指定,编译器将首先搜索“sourcepath”参数,它也会搜索类路径。您可能会发现阅读命令的文档很有帮助:javac . (那是版本 6。我找不到版本 7,但我认为所有这些都适用。)这是 java 的文档。 .

JDK 和 JVM 的位置取决于它们的安装位置。尝试使用 which javac 查找 JDK 所在的位置,使用 which java 查找运行时;这将显示 Linux 在哪里找到这些可执行文件(它可能是通过 PATH 找到的)。

在我的大学生涯中,我花了相当多的时间翻阅 Java 的文档,并从中收获了很多。您可能会发现自己值得一试。这是链接:http://docs.oracle.com/javase/7/docs/ .

关于java - 关于JAVA和Linux的一些基本概念 : PATH variable in LINUX and class location by JVM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16183640/

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