【发布时间】:2016-11-19 06:13:33
【问题描述】:
我正在尝试从 .sh shell 脚本文件为我的 java 代码运行 .jar 文件。 jar 文件名包含“。”这使 Cygwin 终端认为它是一个目录。这是命令和结果:
java -jar ./lib/javax.json-1.0.jar
结果:
没有主清单属性,在 lib\javax.json-1.0.jar
然后:
错误:包 javax.json 不存在
导入 javax.json.Json;
在句点下方带有这个标记 ^(紧跟在 javax 之后)。
我该如何解决?我正在使用 Windows 10。谢谢!
编辑:
我编写了许多形式的 .sh 文件来让它运行,但它不会运行。目前是:
# !bin/bash
java -jar ./lib/javax.json-1.0.jar
java -jar ./lib/javax.json-api-1.0.jar
javac ./src/TimeTester.java
java TimeTester
这个好看吗?
我收到以下错误:
.\src\TimeTester.java:22:错误:包 javax.json 不存在
导入 javax.json.Json; (在 '.' 下方有这个 ^)
并且:
.\src\TimeTester.java:159:错误:找不到符号
私有静态 JsonObject getJsonFromString(String jsonStr){
错误中有许多类似的行..有什么帮助吗?
编辑 2:
这是我当前的文件:
javac -cp ./lib/javax.json-1.0.jar:./lib/javax.json-api-1.0.jar ./src/TimeTester.java
java -cp ./lib/javax.json-1.0.jar:./lib/javax.json-api-1.0.jar:./src TimeTester
但我得到了:
.\src\TimeTester.java:22:错误:包 javax.json 不存在
导入 javax.json.Json;
^
在最后一个点(.Json)下加上这个(^)
编辑 3:
当前的 .sh 文件是:
#!/usr/bin/env bash
cd src
javac -cp '../lib/javax.json-1.0.jar;../lib/javax.json-api-1.0.jar' TimeTester.java
java -cp '../lib/javax.json-1.0.jar;../lib/javax.json-api-1.0.jar' TimeTester
第一个命令 (javac) 起作用并生成 .class 文件。但是,第二个命令(java)不起作用,它给出了以下错误:
错误:无法找到或加载主类 TimeTester
非常感谢您的帮助!
最终编辑:
感谢 Jim,shell 脚本现在可以工作了。现在我得到一个 java 执行错误:
java.io.FileNotFoundException: .\in_input\in.txt(系统找不到指定的路径)
谢谢
【问题讨论】:
-
点表示 bash 中的“当前目录”。也许该脚本是要从文件系统中的特定位置运行的?您可以替换“。”如果您可以找到系统上安装 jar 文件的位置,则使用完整路径的其余部分(可能是 /cygdrive/c 或 /cygdrive/c/usr)。如果我们能看到 bash 脚本的其余部分会有所帮助。
-
@JimLewis 我已经编写了许多形式的 .sh 文件来让它运行,但它不会运行。当前是: java -jar ./lib/javax.json-1.0.jar java -jar ./lib/javax.json-api-1.0.jar cd ./src javac ./TimeTester.java java ./TimeTester 但是仍然无法测试它
-
Cygwin terminal think it is a directory这个错误看起来更像是 java 错误而不是 cygwin 错误。 -
我也试过了:# !bin/bash javac -cp ./lib/javax.json-api-1.0.jar:./lib/javax.json-1.0.jar ./src/TimeTester .java java -cp .:./lib/javax.json-api-1.0.jar:./lib/javax.json-1.0.jar TimeTester
-
使用当前脚本,如果您的
TimerTester依赖于其他 jar 文件(例如javax.json),您需要将它们添加到类路径中(因为您的小代码在上述尝试的评论中被剪断,并且假设它们驻留在命令的目录路径中)。我建议删除中间人(脚本),直到您可以在命令行上正确运行该命令。
标签: java linux unix jar cygwin