什么导致“无法访问 jarfile”错误?

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

Error: Unable to access jarfile <path>

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

我是如何创造这个罐子的:

  1. 右键单击项目文件夹(计算器)
  2. 选择
  3. 点击 Java 文件夹,选择“可执行的 Jar 文件”,然后选择下一步
  4. 发射配置: 主-计算器
  5. 创建导出目的地
  6. 点击“完成”和利润! 好吧,不是真的。
981646 次浏览

修好了

我只是把它放在另一个文件夹里,然后就成功了。

当我将 Jar 文件运行为

java -jar TestJar

而不是

java -jar TestJar.jar

缺少扩展 。罐也会导致这个问题。

如果没有正确地提供参数列表,这种情况也会发生:

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

我在试图启动 jar 文件时遇到了同样的问题。路径包含一个空格,所以我必须在周围放置引号。而不是:

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

我得写信

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

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

只是遇到了同样的问题,试图做一个坏的 USB..。

我尝试在管理 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。单击 properties。 单击右下角的 unblock 选项卡。 该文件被阻止,因为它是下载,而不是在我的电脑上创建。

第二步

在 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 现在位于目录中。

希望这个能帮上忙。

我的特殊问题是因为我使用的目录涉及到符号链接(快捷方式)。因此,尝试 java -jar ../../myJar.jar不起作用,因为我不在我认为我在的地方。

无视相对文件路径修复它的权利。

当你尝试(运行或创建)一个。在 android 工作室中右键单击/libs 文件夹下的 jar 文件。您可以在 android 工作室顶部选择下拉菜单,并将其更改为 应用程序。会成功的

enter image description here

[可能只是窗户]

小心路径中的空格,即使你的 jar 在当前工作目录中。例如,对我来说,这是失败的:

java -jar myjar.jar

我可以通过给这个 jar 提供完整的、带引号的路径来解决这个问题:

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

感谢 这个答案让我走上了正确的道路... ..。

我也遇到过类似的问题,TextMate 或者其他什么东西用 unicode 双引号替换了双引号。

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

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

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

这招对我很管用。

cd /path/to/the/jar/


java -jar ./Calculator.jar

在我的问题访问目录从命令行(在窗口)这个错误

“无法访问...”

因为错误的文件扩展名

文件,罐子,罐子

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

File.jar

:)祝你好运

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

我使用 NetBeans 也有同样的问题。在我运行构建和清理项目后,我的程序是可执行的。Java 文档说,build/clean 命令基本上用于从头重新构建项目,并删除过去的所有编译。希望这个能帮上忙。还有,我看过文件。Oracle 有 NetBeans 和 Java 的学习路径。很有帮助。祝你好运!

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

如果您使用的是 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

在 Windows 机器上,如果文件夹名中有空格,就会发生这种情况。解决方案是进入“”之间的路径。 例如:

java -jar c:\my folder\x.jar    -->
java -jar "c:\my folder\x.jar"

为了避免任何权限问题,请尝试以管理员身份运行它。

我知道这个帖子是多年前的事了,问题也解决了。但是,我希望这将有助于其他人在未来,因为我遇到了一些类似的问题,而我试图安装 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的内容,请确保 Environment Variables 中 JAVA_HOME的 System 变量指向正确的 JDK 目录。推荐 JDK 1.8或更高版本(2018)。

这里有一个有用的线程,你可以参考它: 为什么它显示您的 JDKc: 程序文件 java jre7不是一个有效的 JDK,而安装 weblogic 服务器?

我有一个类似的问题,我甚至尝试运行我的 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

您是否尝试使用管理员特权运行它? 意思是,在“ Run As”中运行命令,然后选择具有适当管理凭据的管理员

对我有用

我试过了:

在给予文件读、写、执行特权之后:

chmod 777 java-repl.jar

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

无法访问等等... ,这是在 Mac 操作系统上

所以我试了这个:

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

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

下载文件时,请确保在文件属性中检查 UNBLOCK TAB,如上文“ maartencls”文章所示。

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

希望这能解决问题:)

“无法访问 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 前面只有一个空格,尽管它被引号包围,甚至还有其他空格。

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

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

将文件保存在解压缩文件的同一目录中,我就是这么做的。

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

所以我用了:

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

代替 java 7的版本:

java -jar myjar.jar

如果你在 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

第一轮: java -version

然后运行: java -jar Calculator.jar

这招对我很管用。

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

重命名 jar 文件并尝试

说明: 是的,我知道有很多答案,但我还是想在这里补充一点。

我构建了 jar 并将其移动到部署的服务器中(这是正常的过程) 这里我移动的文件名已经存在于服务器,这里的文件将覆盖显然是正确的。在这种情况下,我面临着这个问题。 也许在重写的时候会有一个许可复制问题。

希望这能帮到别人。

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

您可以指定 java.exe文件的完整路径,例如:

"c:\Program Files\Java\jdk-9.0.4\bin\java.exe" -jar path_to_your_jar_file.jar

帮助了我。

或者检查系统中默认运行的 java.exe文件,特别是当您有多个版本的 JDK/JRE 时。

所提供的答案没有一个在 macos11BigSur 上对我有用。问题在于,程序访问桌面、文档和下载文件夹需要特殊权限,而 Java 打破了直接打开文件的异常和弹出的权限请求。

解决办法:

  • 将.jar 移动到不在(也不在)“文档”、“桌面”或“下载”下的文件夹中。
  • 手动授权。进入系统首选项→安全和隐私→隐私→文件和文件夹→ java,并检查适当的文件夹。

如果您使用的是虚拟机上的共享文件夹(在我的示例中是虚拟机) ,那么似乎就没有访问该文件的所有权限。此外,它还需要提升特权来对文件进行 chmod。

sudo chmod +rwx filename.jar

在此之后,您应该能够正常地访问 jarfile。

在我的示例中,jar 路径的/指向文件系统的根目录,而不是项目的根目录。

通过替换/by./来获取当前的工作目录,而不是根目录,路径得到了修复。

如果您在另一个文件系统上运行这个命令,例如 heroku: heroku local web,那么这是可能的。