指定Java类路径变量
我不熟悉Java,我正在尝试运行一段打包为jar文件的Java代码 在Windows命令行上,我指定jar文件夹的类路径,如下所示:指定Java类路径变量,java,jar,classpath,Java,Jar,Classpath,我不熟悉Java,我正在尝试运行一段打包为jar文件的Java代码 在Windows命令行上,我指定jar文件夹的类路径,如下所示: set CLASSPATH="D:\jarFolder" 文件夹中有一个test.jar文件。但是当我运行这个 java -jar test.jar 它仍然失败,出现以下错误: Unable to access jarfile test.jar 我可以通过指定完整路径来运行test.jar。但是我想知道为什么类路径不起作用。我的理解是,它告诉java运行时j
set CLASSPATH="D:\jarFolder"
文件夹中有一个test.jar文件。但是当我运行这个
java -jar test.jar
它仍然失败,出现以下错误:
Unable to access jarfile test.jar
我可以通过指定完整路径来运行test.jar。但是我想知道为什么类路径不起作用。我的理解是,它告诉java运行时jar文件的位置。jar文件必须显式地位于类路径上。为jarfile指定类路径目录是不够的 请参见Java命令行上的: 使用此选项时,JAR文件是所有用户的源文件 类和其他用户类路径设置将被忽略 尝试使用
java -jar D:\jarFolder\test.jar
如果您知道jar入口点的主类名。你可以用
set CLASSPATH="D:\jarFolder"
java yourpackage.yourEntryPoint
您可以使用zip程序提取jar文件并读取,从而了解jar文件的入口点
使用-jar选项时,需要指定哪个jar。这样想吧。如果您没有给出jar名称,那么java应该执行哪个jar?您的类路径中可能有10个、20个或100个jar
但是如果你给类名,那么java会在jar之间搜索并执行正确的一个。我尝试了这个
set CLASSPATH=“D:\jarFolder\test.jar”
,如果我使用java-jar-test.jar
,仍然会出现相同的错误,但是如果我像这样指定包名java a.b.ClassName
,它会起作用。不知道为什么…您正在指定开始类吗?支持在类路径上显式设置jarfile,这是调用不是清单中主类的类的唯一方法。是的,我指定的是start类。我只是感到困惑,为什么它不能结合CLASSPATH文件夹和test.jar文件名来创建完整路径。类路径向VM展示了如何找到JAR文件,该文件被视为没有清单的未爆炸zipfile。然后,您必须告诉VM您的特定main()恰好位于何处。coward的回答是“按设计”:)我尝试了这个set CLASSPATH=“D:\jarFolder\test.jar”
,如果我使用java-jar-test.jar
,仍然是相同的错误,但是如果我像这样指定包名java a.b.ClassName
,它会起作用。不知道为什么…我的问题是,java运行时是如何计算jar完整路径的?因为java的参数是start类,您提供的是清单文件中找到的。java-jar。。。。只是为了方便起见,在类路径中添加一个jar文件,并在jar清单文件中标识的完全限定的开始类上调用java。这两个答案都是100%正确的,所以我不知道它们为什么不“有用”。我没有记下它们。是别人干的。