为什么.jar当我像这样运行脚本时
java -jar myfile.jar它会运行,但是当我像这样执行它时它不运行
./myfile.jar
当您使用运行 jar 时,java -jar myfile.jar您是在告诉 shell 运行java命令并向它传递一些可以java理解的参数。但是,当您使用它运行它时,您是./myfile.jar在要求 shell 确定运行它的中断器,这是它无法做到的。
shell 会在脚本的开头查找 shebang 行,以了解使用哪个应用程序运行脚本,这就是为什么您会看到 shell 脚本以以下开头:
#!/bin/bash
Run Code Online (Sandbox Code Playgroud)
或者 python 脚本以
#!/usr/bin/python
Run Code Online (Sandbox Code Playgroud)
您告诉 shell 的内容基本上是使用您在/bin/bash或 处找到的应用程序运行脚本/usr/bin/python。对于您的 jar 文件,shell 无法找到 shebang,因此它不知道如何执行代码。
过去,我使用包装器脚本来执行 Java 应用程序,因此类似于:
#!/bin/bash
java -jar /path/to/myfile.jar
Run Code Online (Sandbox Code Playgroud)
然后,您只需要制作该可执行文件,使用chmod并且您可以像运行任何其他 shell 脚本一样运行它。
| 归档时间: |
|
| 查看次数: |
940 次 |
| 最近记录: |