165

我想在不使用 IDE 的情况下执行我的程序。我创建了一个 jar 文件和一个可执行的 jar 文件。当我双击 exe jar 文件时,什么也没有发生,当我尝试在 cmd 中使用该命令时,它给了我这个:

Error: Unable to access jarfile <path>

我使用命令:java -jar Calculator.jar

我是如何创建 jar 的:

  1. 右键单击项目文件夹(计算器)
  2. 选择
  3. 单击Java文件夹并选择“可执行Jar文件”,然后选择下一步
  4. 启动配置:主 - 计算器
  5. 创建导出目的地
  6. 点击“完成”并获利!嗯,不是真的。
4

37 回答 37

100

我在运行 Jar 文件时遇到了这个问题

java -jar TestJar

代替

java -jar TestJar.jar

缺少扩展名.jar也会导致此问题。

于 2014-09-16T10:26:00.693 回答
78

固定的

我只是把它放在一个不同的文件夹中,它工作。

于 2012-08-15T04:05:07.207 回答
40

[可能仅限 Windows]

请注意路径中的空格,即使您的 jar 位于当前工作目录中。例如,对我来说这是失败的:

java -jar myjar.jar

我可以通过给出 jar 的完整引用路径来解决这个问题:

java -jar "%~dp0\myjar.jar" 

归功于这个答案让我走上了正确的道路......

于 2016-03-15T03:15:08.717 回答
22

我在 Windows 的 CygWin 下遇到了这个问题。我在其他地方读到 Java 不理解 CygWin 路径(/cygdrive/c/some/dir而不是C:\some\dir) - 所以我使用了相对路径../../some/dir/sbt-launch.jar

于 2016-08-04T17:18:56.930 回答
18

尝试启动 jar 文件时遇到了同样的问题。路径包含一个空格,所以我不得不在周围加上引号。代替:

java -jar C:\Path to File\myJar.jar

我不得不写

java -jar "C:\Path to File\myJar.jar"
于 2015-09-06T18:05:01.527 回答
14

刚刚遇到了同样的问题,试图制作一个坏的 USB ......

我尝试在 admin cmd 中运行此命令

java -jar c:\fw\ducky\duckencode.jar -I c:\fw\ducky\HelloWorld.txt  -o c:\fw\ducky\inject.bin

但是得到了这个错误:

Error: unable to access jarfile c:\fw\ducky\duckencode.jar

解决方案

第一步

右键单击有问题的 jarfile。单击属性。单击右下角的取消阻止选项卡。该文件被阻止,因为它是下载的,而不是在我的电脑上创建的。

第二步

在cmd中,我将目录更改为jar文件所在的位置。

cd C:\fw\ducky\

然后我输入dir并看到文件名为duckencode.jar.jar

所以在 cmd 我改变了原来的命令来引用文件.jar.jar

java -jar c:\fw\ducky\duckencode.jar.jar -I c:\fw\ducky\HelloWorld.txt  -o c:\fw\ducky\inject.bin

该命令在没有错误消息的情况下执行,并且我试图创建的 inject.bin 现在位于目录中。

希望这可以帮助。

于 2015-10-23T20:26:32.780 回答
8

我有一个类似的问题,我什至尝试使用管理员权限运行我的 CMD,但它并没有解决问题。

基本的事情是确保将cmd 中的目录更改为您的 jar 文件所在的当前目录

执行以下步骤:

  1. 将 jar 文件复制到桌面。

  2. 运行 CMD

  3. 键入命令cd desktop

  4. 然后输入java -jar filename.jar

这应该有效。


编辑:从 JDK-11 开始(JEP 330:启动单文件源代码程序)

从 Java 11 开始,java 命令行工具已经能够直接运行单文件源代码。例如

java filename.java
于 2018-12-26T06:22:41.163 回答
7

如果您使用的是 OSX,下载的文件会带有一个安全标志,以防止未签名的应用程序运行。

要检查这一点,您可以查看文件的扩展属性

$ ls -l@
-rw-r--r--@ 1 dave  staff  17663235 13 Oct 11:08 server-0.28.2-java8.jar
com.apple.metadata:kMDItemWhereFroms         619
com.apple.quarantine          68

然后,您可以使用清除属性

xattr -c file.jar
于 2017-10-13T10:24:36.050 回答
6

在 macOS 11 Big Sur 上,提供的答案均不适合我。问题原来是程序需要特殊权限才能访问桌面、文档和下载文件夹,而 Java 打破了直接打开文件的异常和权限请求弹出窗口。

修复:

  • 将 .jar 移动到不在 Documents、Desktop 或 Downloads 下(也不在其下)的文件夹中。
  • 手动授予权限。转到系统偏好设置→安全和隐私→隐私→文件和文件夹→java,然后检查相应的文件夹。
于 2021-01-27T09:50:31.037 回答
5

这对我有用。

cd /path/to/the/jar/

java -jar ./Calculator.jar
于 2016-11-15T18:18:30.497 回答
3

如果您没有正确提供参数列表,也会发生这种情况。这就是我正在做的事情:

java -jar test@gmail.com testing_subject file.txt test_send_emails.jar

而不是正确的版本:

java -jar test_send_emails.jar test@gmail.com testing_subject file.txt
于 2015-07-15T08:06:37.040 回答
3

对我来说,如果您在 PATH 中的文件夹名称中使用本机波兰字符,就会发生这种情况。所以也许使用非典型字符是问题的原因。

于 2015-10-08T09:52:17.523 回答
3

当您尝试(运行或创建)/libs 文件夹下的 .jar 文件时,有时会发生这种情况,方法是在 android studio 中右键单击它。您可以选择 android stuio 顶部的下拉菜单并将其更改为app。这将起作用

在此处输入图像描述

于 2016-02-17T10:44:46.293 回答
2

我的特定问题是因为我正在使用涉及符号链接(快捷方式)的目录而引起的。因此,尝试java -jar ../../myJar.jar没有奏效,因为我不在我想的地方。

忽略相对文件路径将其修复。

于 2015-11-18T23:31:55.247 回答
2

在我的情况下,建议使用的文件名jarFile*.jar在命令行中。文件夹中的文件是jarFile-1.2.3.jar. 所以我将文件重命名为jarFile. 然后我用jarFile.jar代替jarFile*.jar然后问题得到解决

于 2017-01-22T06:41:19.130 回答
2

当文件夹名称中有空格时,它可能发生在 Windows 机器上。解决方案是输入“”之间的路径。例如:

java -jar c:\my folder\x.jar    --> 
java -jar "c:\my folder\x.jar"
于 2017-10-31T08:57:26.700 回答
2

为避免任何权限问题,请尝试以管理员身份运行它。这在 Win10 上对我有用。

于 2018-03-14T15:14:35.957 回答
2

我知道这个线程是几年前的,问题也得到了解决。但我希望这对其他人有所帮助,因为我在尝试安装 Oracle WebLogic 12c 和 Oracle OFR 时遇到了一些类似的问题,其中它的安装程序是.jar格式的。对于我的情况,它要么没有将 JDK 目录用引号括起来,要么只是拼写错误。

以管理员身份运行Command Prompt并以这种格式执行命令。如果有错别字,请仔细检查句子。

"C:\Program Files\Java\jdk1.xxxxx\bin\java" -jar C:\Users\xxx\Downloads\xxx.jar

如果显示类似JRE 1.xxx is not a valid JDK Java Home,请确保JAVA_HOME环境变量中的系统变量指向正确的 JDK 目录。建议使用 JDK 1.8 或更高版本(2018)。

这里有一个有用的线程,您可以参考它:为什么它在安装 weblogic 服务器时显示您的 JDK c:program files\java\jre7 不是有效的 JDK?

于 2018-10-23T06:54:13.113 回答
1

我有一个类似的问题,TextMate 或其他东西用 unicode 双引号替换了双引号。

将我SELENIUM_SERVER_JAR的从 unicode 双引号更改为常规双引号,这解决了我的问题。

于 2016-03-30T18:05:20.090 回答
1

这是因为您在错误的路径中查找文件 1. 查找放置文件的文件夹的路径 2. 在 cmd 中更改目录 cd 使用正确的路径

于 2016-06-19T21:39:10.180 回答
1

我使用 NetBeans 并遇到了同样的问题。在我运行构建和清理项目后,我的程序是可执行的。Java 文档说 build/clean 命令基本上是从头开始重建项目并删除任何过去的编译。我希望这有帮助。另外,我会阅读文档。Oracle 有 NetBeans 和 Java 学习路径。很有帮助。祝你好运!

于 2017-07-16T13:43:45.263 回答
1

也许您指定了错误的 jar 版本。

于 2017-09-21T21:52:43.517 回答
1

我终于将我的 jar 文件粘贴到与我的 JDK 相同的文件夹中,因此我不必包含路径。我还必须以管理员身份打开命令提示符。

  1. 右键单击命令提示符和“以管理员身份运行”
  2. 导航到保存 jdk 的目录
  3. 在命令提示符下键入: java.exe -jar <jar file name>.jar
于 2020-01-14T15:04:46.487 回答
1

将文件保存在您提取它的同一目录中。这对我有用。

于 2020-01-22T02:18:35.750 回答
1

对我来说,这是因为我使用默认的 java 版本(7)而不是用于创建这个 jar 的已编译的 java 版本(8)运行它。

所以我用:

%Java8_64%\bin\java -jar myjar.jar

而不是 java 7 版本:

java -jar myjar.jar
于 2020-02-09T19:19:14.423 回答
1

这是权限问题,查看目录是否在您的用户下。这就是为什么在另一个文件夹中工作!

于 2020-07-31T13:05:49.873 回答
0

您是否尝试在管理员权限下运行它?意思是,在“运行方式”中运行命令,然后选择具有正确管理员凭据的管理员

为我工作

于 2019-05-14T20:28:37.773 回答
0

我正在尝试这个:

赋予文件读、写、执行权限后:

chmod 777 java-repl.jar

alias jr="java -jar $HOME/Dev/java-repl/java-repl.jar"

无法访问 bla bla ...,但这是在 Mac OS 上

所以我尝试了这个:

alias jr="cd $HOME/Dev/java-repl/ && java -jar java-repl.jar"

于 2019-07-23T08:53:25.673 回答
0

这不起作用“无法访问 jarfile”

"C:\Program Files\java\jdk-13+33-jre\bin\javaw.exe" -jar "C:\Program Files\Maxim Integrated Products\1-Wire Drivers x64\ OneWireViewer.jar"

这确实有效

"C:\Program Files\java\jdk-13+33-jre\bin\javaw.exe" -jar "C:\Program Files\Maxim Integrated Products\1-Wire Drivers x64\OneWireViewer.jar"

不同之处在于 OneWireViewer.jar 前面的单个空格,尽管它被引号包围,甚至还有其他空格。

于 2019-10-13T15:21:49.907 回答
0

如果您在 WSL 上,并按照指南说,这样说:

java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -sharedDb

您实际上需要指定完整路径,即使您已在java.library.path部分中提供了它。

java -Djava.library.path=/mnt/c/dynamodb_local/DynamoDBLocal_lib -jar /mnt/c/dynamodb_local/DynamoDBLocal.jar -sharedDb
于 2020-04-21T14:10:23.063 回答
0

重命名jar文件并尝试

解释:是的,我知道还有很多答案我想在这里添加一点我遇到的问题。

我构建了 jar 并将其移到了我部署的服务器中(这是正常过程),这里我移动的文件名已经存在于服务器中,这里的文件显然会覆盖正确。在这种情况下,我遇到了这个问题。也许在覆盖时可能存在许可副本问题。

希望这会对某人有所帮助。

于 2020-08-03T14:12:17.507 回答
0

对我来说,在访问之前放置 jar 的文件夹后问题得到解决,我在 D: 驱动器上发出命令,但是当我导航到放置该 jar 的文件夹时,这个问题得到了解决

于 2020-08-18T16:35:29.943 回答
-1

首先我创建了一个变量%JAVA_HOME% :

当您下载文件时,请确保检查UNBLOCK TAB文件属性,如上面“maartencls”帖子中所示。

c:\users\my user\downloads\location of the file\all> java -jar yourfilename.jar

希望这能解决问题:)

于 2019-08-03T16:20:37.023 回答
-1

首轮:java -version

然后运行:java -jar Calculator.jar

这对我有用。

于 2020-05-26T06:08:31.203 回答
-1

您可以指定 java.exe 文件的完整路径,例如:"c:\Program Files\Java\jdk-9.0.4\bin\java.exe" -jar path_to_your_jar_file.jar 这对我有帮助。或者检查系统中默认运行的 java.exe 文件(特别是如果您有多个版本的 JDK/JRE)。

于 2020-09-18T18:25:31.940 回答
-2

在我从命令行(在 Windows 中)访问目录的问题中,此错误

“无法访问……”

因为错误的文件扩展名

文件.jar.jar

!, 所以改变它来纠正一个

文件.jar

:) 祝你好运

于 2017-01-01T05:07:44.793 回答
-2

右键单击文件的父文件夹>属性>选中只读

于 2020-11-10T22:34:38.823 回答