【问题标题】:Jar file dont work when i execute my "sh" File in linux consol当我在 linux 控制台中执行我的“sh”文件时,jar 文件不起作用
【发布时间】:2022-01-14 08:09:54
【问题描述】:

当我尝试执行时执行这一行

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

【问题讨论】:

    标签: java linux selenium


    【解决方案1】:

    问题是您的类路径定义中的; 实际上分隔了两个命令,因此$projectLocation/lib/* 被解释为一个新命令,扩展为 jar 文件的名称,并且 shell 尝试将 jar 文件作为shell 脚本(失败得很惨)。在 Linux 上,类路径的分隔符是 : 而不是 ;(几乎可以肯定正是这个原因)。

    换句话说:而不是

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

    你需要

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

    作为奖励建议:CLASSPATH 中的 /* 应该由 Java 解释,而不是 shell,因此最好实际引用该值:

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

    【讨论】:

    • 很想亲吻你的兄弟,但不知道你住在哪里上帝保佑你
    • 谢谢,我认为我们在没有亲吻的情况下会更好;-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-04
    • 1970-01-01
    • 2014-04-23
    相关资源
    最近更新 更多