【问题标题】:What causes "Unable to access jarfile" error?什么导致“无法访问 jarfile”错误?
【发布时间】:2012-08-10 06:02:23
【问题描述】:

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

Error: Unable to access jarfile <path>

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

我是如何创建 jar 的:

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

【问题讨论】:

  • 听起来 Jar 在某些方面已损坏,可能缺少 Manifest 条目。
  • 您应该展示您是如何创建 JAR 的,其中有什么以及您如何尝试运行该程序。 Java 代码在这里无关紧要。
  • 您是否尝试过重新启动 elcipse 并重新编译?有时 Eclipse 会做一些奇怪的事情,可以通过重新启动来避免。
  • 我发现代码难以阅读和思考。将所有内容都放在静态主函数中并使用单个实例方法来清除控制台有什么意义?
  • 我的问题没有答案,我自己回答了,没有办法在 cmets 中表达我的感激之情,除了通过回复感谢他们。请重新阅读您的评论。

标签: java jar executable-jar


【解决方案1】:

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

java -jar TestJar

而不是

java -jar TestJar.jar

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

【讨论】:

  • 这是正确答案。 .jar 扩展名必须附加到 jar 文件名。
  • 这并不总是正确的答案,我正在附加它,但它不起作用。
  • 就我而言,我认为它是一个文件,而它是控制台上的一个文件夹。 jar 文件位于同名文件夹中。
【解决方案2】:

已修复

我只是将它放在另一个文件夹中,它可以工作。

【讨论】:

  • 有人能解释为什么会这样吗?
  • 听起来可能是文件权限问题,但完全是猜测。
  • 我在 WIndows 上遇到了类似的问题,使用的是 cygwin。所以 cygwin 使用不同于 windows /cygdrive/c/ vs C:\ 的路径我通过使用 realpath --relative-to=$(pwd) path/to/jarfile 修复了这个问题所以它总是使用 /cygdrive/c/.../path/to/jarfile 强制执行相对路径 iso
  • 我也遇到了同样的问题,我的 jar 也是,我不小心打错了 jar 的路径
  • @Rik 您的评论很有帮助,尽管它不适用于 dos 路径和 cygwin 路径中的 java 文件。这里的解决方案是java -jar $(cygpath -a -d `realpath --relative-to=$(pwd) $HOME/opt/javafile.jar`)
【解决方案3】:

[可能仅限 Windows]

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

java -jar myjar.jar

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

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

感谢this answer 让我走上了正确的道路......

【讨论】:

  • 谢谢。如果尝试从不同的目录运行它,还需要提供 Linux 中的完整路径。
  • 此答案部分与此问题上已给出的答案重复。这是使用相同方法的较早答案:完整引用路径。 Sep 6 '15@benez
【解决方案4】:

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

【讨论】:

  • 我在 CygWin 中遇到了这个确切的问题!永远感谢你!
  • 如果您需要 cygwin 使用 windows 格式的路径而不是 cygwin 路径,您可以使用 cygpath -w /path/here 命令将路径转换为 ​​windows 等效路径。
  • @JasonSlobotski 感谢您的提示,我认为您的评论本身应该是一个答案。
【解决方案5】:

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

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

我不得不写

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

【讨论】:

  • 引号对我有用,因为我之间也有空格。然后我尝试了它,路径中没有空格,也没有引号,然后它也起作用了
  • Anno 2019:这个解决方案对我有帮助,带引号!没有引号和空格在我的情况下不起作用。
【解决方案6】:

刚刚在尝试制作坏 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。单击属性。 单击右下角的取消阻止选项卡。 该文件已被阻止,因为它是在我的 PC 上下载而不是创建的。

第二步

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

希望这会有所帮助。

【讨论】:

  • 谢谢,我的也被命名为 apktool.jar.jar
【解决方案7】:

我遇到了类似的问题,我什至尝试使用管理员权限运行我的 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

【讨论】:

    【解决方案8】:

    如果您使用的是 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
    
    【解决方案9】:

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

    修复:

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

    【讨论】:

      【解决方案10】:

      这对我有用。

      cd /path/to/the/jar/
      
      java -jar ./Calculator.jar
      

      【讨论】:

        【解决方案11】:

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

        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
        

        【讨论】:

          【解决方案12】:

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

          【讨论】:

            【解决方案13】:

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

            【讨论】:

              【解决方案14】:

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

              忽略相对文件路径会直接修复它。

              【讨论】:

                【解决方案15】:

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

                【讨论】:

                • 执行此操作后,我无法访问 jar 文件的问题解决了。
                【解决方案16】:

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

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

                【讨论】:

                • 这没有回答问题,您应该使用 cmets 询问更多信息。
                【解决方案17】:

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

                【讨论】:

                • mac呢?
                【解决方案18】:

                我知道这个帖子是几年前的,问题也已修复。但我希望这对其他人有所帮助,因为我在尝试安装 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)。

                这里有一个有用的帖子,你可以参考它:Why its showing your JDK c:program files\java\jre7 is not a valid JDK while instaling weblogic server?

                【讨论】:

                  【解决方案19】:

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

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

                  【讨论】:

                    【解决方案20】:

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

                    【讨论】:

                      【解决方案21】:

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

                      【讨论】:

                        【解决方案22】:

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

                        【讨论】:

                          【解决方案23】:

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

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

                          【讨论】:

                            【解决方案24】:

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

                            【讨论】:

                              【解决方案25】:

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

                              所以我用了:

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

                              而不是java 7版本:

                              java -jar myjar.jar
                              

                              【讨论】:

                                【解决方案26】:

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

                                【讨论】:

                                  【解决方案27】:

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

                                  为我工作

                                  【讨论】:

                                    【解决方案28】:

                                    我正在尝试这个:

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

                                    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/ &amp;&amp; java -jar java-repl.jar"

                                    【讨论】:

                                      【解决方案29】:

                                      这不起作用“无法访问 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前面的单个空格,尽管它被引号包围,甚至还有其他空格。

                                      【讨论】:

                                        【解决方案30】:

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

                                        【讨论】:

                                          猜你喜欢
                                          • 1970-01-01
                                          • 2021-01-22
                                          • 2017-04-13
                                          • 2019-11-17
                                          • 1970-01-01
                                          • 1970-01-01
                                          • 1970-01-01
                                          • 2019-06-03
                                          相关资源
                                          最近更新 更多