當我在 linux consol 中執行我的“sh”文件時,Jar 文件不起作用

當我嘗試執行以執行此行時

bash -x ExecutionAuto.bat

我從我的 Lib 文件夾中收到一條錯誤消息,說其中一個 jar 無法正常工作。

../Demo_Automatisation/lib/SparseBitSet-1.2.jar: line 1: $'PK\003\004': command not found
../Demo_Automatisation/lib/SparseBitSet-1.2.jar: line 2: $'ؔ\220L': command not found
../Demo_Automatisation/lib/SparseBitSet-1.2.jar: line 8: syntax error near unexpected token `)'
��������0 6&»���2<��߽�{�i'���arseBitSet-1.2.jar: line 8: `��6)Ѐ*u)�����RP  �rN-p�đ�
                            �{�eB�M}i��Qa0�{}/�aHU�
'���xQXk)�Ћ.'?l3����A�I�|��0AİV���v�)s    ?���5N���V��v��hH�;"���~Gt  D��}|ȣ^�`�ܨ"r��d���}7��0t)y���{�W���
+ java org.testng.TestNG ../Demo_Automatisation/testng.xml
Error: Could not find or load main class org.testng.TestNG
Caused by: java.lang.ClassNotFoundException: org.testng.TestNG

我不知道 jar 文件是否有問題,因為它在 Windows 中運行良好,但在 linux 中它不起作用。

這是我的 .sh 文件:

export projectLocation=../Demo_Automatisation
cd $projectLocation
export CLASSPATH=$projectLocation/bin;$projectLocation/lib/*
java org.testng.TestNG $projectLocation/testng.xml

我只是複制了我在互聯網上找到的內容,因為我一開始有一個 .bat 文件,因為我使用 Windows 確實從 Windows 轉移到 linux 需要我對我的 jar 文件做些什麼?

約阿希姆·紹爾

問題是;在您的類路徑定義中實際上將兩個命令分開,因此它$projectLocation/lib/*被解釋為一個新命令,擴展為 jar 文件的名稱,並且 shell 嘗試將 jar 文件作為 shell 腳本執行(這很失敗)。在 Linux 上,類路徑的分隔符是:和不是;(幾乎可以肯定正是出於這個原因)。

換句話說:而不是

export CLASSPATH=$projectLocation/bin;$projectLocation/lib/*

你需要

export CLASSPATH=$projectLocation/bin:$projectLocation/lib/*

作為額外建議:/*inCLASSPATH應該由 Java 而不是shell解釋,所以最好實際引用該值:

export CLASSPATH="$projectLocation/bin:$projectLocation/lib/*"

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章