Windows 10 上的 Java 8 - CLASSPATH 不起作用

标签 java windows-10 classpath

Windows 10 1803 64位,Java JRE 8。未安装JDK。

我的文件夹中有一个 .jar:

c:\users\myuser\KickAssembler\KickAss.jar

在系统环境变量下,我的 CLASSPATH 为:

c:\users\myuser\KickAssembler\

在命令提示符处设置 CLASSPATH(使用 ECHO 检查)。

当我尝试时出现提示:

java -jar KickAss.jar

它返回:

Error: Unable to access jarfile KickAss.jar

如果我先 CD 进入该目录,然后运行它,它就可以正常工作。所以看起来 CLASSPATH 没有被使用。我也已将该位置添加到标准 Windows PATH 中,但仍然不起作用。

文件名大小写的不同组合不起作用。 Windows 设置为显示隐藏文件。这不可能是权限问题,因为当我首先更改到目录时它会起作用。

我还能尝试什么吗?

最佳答案

CLASSPATH用于定义Java加载类的路径。 CLASSPATH 可以包含文件夹和 JAR 文件,例如:C:\mybin;c:\myjars\some.jar 此类路径将加载驻留在 c:\中或之下的任何完全限定的类文件mybin 以及 c:\myjars\some.jar 中的任何完全限定类。 CLASSPATH 不会允许 JAVA 找到您的 JAR 文件,正如您在使用 -jar 开关时所期望的那样,它不会沿着类路径搜索任何 JAR 文件,它只会查找 CLASSPATH 中明确指定的文件,然后仅查找类其中的文件。请注意,完全限定意味着package + class,例如:com.myorg.somepackage.someclass,而不仅仅是someclass

正如您所观察到的,如果您位于 kickass.jar 所在的文件夹中,则当存在 JAR 文件时,命令行就会起作用。如果您在从另一个文件夹执行命令时完全引用 JAR 文件,则命令行也应该可以工作。

参见https://docs.oracle.com/javase/8/docs/technotes/tools/windows/classpath.html有关 CLASSPATH 如何工作的更多详细信息。使用JAVA时,对CLASSPATH有充分的了解非常重要。

关于Windows 10 上的 Java 8 - CLASSPATH 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58268034/

相关文章:

java - 为什么 `setConnectionRequestTimeout` 没有停止我的 1 分钟获取请求?

c# - Winforms - C# 任务栏进度指示器 (Windows 10)

java - Jmx 客户端抛出 InstanceNotFoundException

docker - 如何在 Windows 10 家庭版上安装 Docker?

java - JMeter 4 与 JAVA 版本 10 : An illegal reflective access operation has occurred

java - NoClassDefFoundError 到底什么时候抛出?

java - jdk.dynalink 在 Java 9 的引导类路径中不可见

java - 使用 JDBC 将用户定义的表类型传递给 SQL Server 存储过程

java - AdMob 中介,仅适用于 AdMob

java - 如何在struts2中使用dojo将表单数据提交给action在同一个jsp页面中显示结果