簡體   English   中英

在Linux上運行程序時出現錯誤。 在Windows上運行正常

[英]Getting Error while running program on linux. On windows it is working fine

我做了一個java程序。 我用過eclipse,這是一個maven項目。 現在,當我從Windows命令提示符運行該程序時,則運行正常。 這是我如何從Windows命令提示符運行它

D:\Personal Work\eclipse 32 Bit\workspace\....\target\classes>
java -cp ".;..\dependency-jars\*"  com/softech/ls360/integration/BatchImport vintners

一切正常。 我的依賴項jar文件夾包含這些jar文件

依賴關系的罐子

現在,當我從linux運行相同的程序時。 這是我的方式

root@Basit:/home/test/script/classes# java -cp .;../dependency-jars/*;  com.s
oftech.ls360.integration.BatchImport vintners

然后我得到的錯誤

....
-javaagent:<jarpath>[=<options>]
              load Java programming language agent, see java.lang.instrument
-splash:<imagepath>
              show splash screen with specified image
../dependency-jars/commons-collections-3.2.1.jar: line 1: PK??: command not found
../dependency-jars/commons-collections-3.2.1.jar: line 2:
../dependency-jars/commons-collections-3.2.1.jar: line 2: ?8: command not found
../dependency-jars/commons-collections-3.2.1.jar: line 3: syntax error near unex
pected token `)'
../dependency-jars/commons-collections-3.2.1.jar: line 3: ?     ¶META-INF/MANIFE
ST.MF?VKo
     _¦?z?  ?%+v?N??!ö!P@
                         (
                          _?o.5?$
com.softech.ls360.integration.BatchImport: command not found

為什么我遇到這些錯誤。 我如何在Linux上運行它? 請幫忙

謝謝

您需要使用:而不是; 在Linux環境中的classpath中。 假設您正確放置了廣口瓶,則只需更改以下內容即可:

java -cp .;../dependency-jars/*;  com.s
oftech.ls360.integration.BatchImport vintners

java -cp .:../dependency-jars/*:  com.s
oftech.ls360.integration.BatchImport vintners

應該管用

在此處了解有關設置類路徑的更多信息: http : //docs.oracle.com/javase/tutorial/essential/environment/paths.html

分號使Bash調用不帶類路徑的java命令,然后嘗試直接執行每個jar,以查找不存在的shebang。 這導致JAR標頭被打印為錯誤的一部分。

在Linux上,使用:分隔jar而不是分號。

您需要進行兩項更改:

  1. 首先,類路徑分隔符是':'而不是';' 在Linux上
  2. 其次,您需要使用反斜杠('\\')來對通配符進行轉義,否則shell將對其進行擴展並將其弄亂。 您希望Java看到'*'字符並將其本身展開。 Windows Shell不會在命令行上擴展通配符,因此這不是問題。

因此,總的來說,您將希望使用類似

java -cp .:../dependency-jars/\*:  com.softech.ls360.integration.BatchImport vintners

您應該使用:而不是; 作為類路徑文件的生成器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM