当前位置: 首页 > 知识库问答 >
问题:

在linux控制台中执行“sh”文件时,Jar文件不起作用

柳胡媚
2023-03-14

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

bash -x ExecutionAuto.bat

我从我的Lib文件夹中得到一个错误,说其中一个罐子不能正常工作。

../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文件做些什么?

共有2个答案

越涛
2023-03-14

projectLocation是一个相对路径,您可以在更改工作目录后重新使用它。尝试使用一个绝对路径,也许它会得到固定的方式。

赫连照
2023-03-14

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

换句话说:而不是

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

你需要

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

作为一个额外的建议:类路径中的/*应该由Java而不是shell来解释,因此最好实际引用以下值:

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

 类似资料:
  • 问题内容: 我有一个没有GUI的程序,并且使用控制台!所以首先我从控制台的用户那里读了一行 BufferedReader userReader = new BufferedReader(new InputStreamReader(System.in)); 然后我将在控制台中为用户写一个答案! System.out.println(“ Server:” + output); 我要为此创建一个jar文

  • 问题内容: 我将如何执行.SH文件(这是localhost,没有远程连接或其他任何内容)?当我进行搜索时,我看到了很多其他东西,但这些似乎没有用。 这是Java6。同样重要的是,SH所做的只是在移动两个文件夹。 谢谢! 问题答案: 您可以使用ProcessBuilder

  • 问题内容: 我将如何执行.SH文件(这是localhost,没有远程连接或其他任何内容)?当我进行搜索时,我看到了很多其他东西,但这些似乎没有用。 这是Java6。同样重要的是,SH所做的只是在移动两个文件夹。 谢谢! 问题答案: 您可以使用ProcessBuilder

  • 我可以运行在JAR中找到的SH文件吗? 我正在尝试从参考资料中提取文件并将其插入进程中。 当我尝试以这种方式运行时,我给了我一个错误 或者只是如果外部文件然后我可以执行它?

  • 我试图在linux中从systemd服务启动一个jar。我正在执行的jar假设在当前目录中有一个xml文件。我正在传递该文件的名称,并带有-config参数。我创建的示例服务如下: <代码>[单元]描述=我的服务后=网络。目标 上面的服务文件位于/usr/lib/systemd/system目录中,称为myservice。服务我正在执行以下命令来启动它: systemctl守护程序重新加载syst

  • 我试图用pyinstaller创建python脚本的可执行文件,但它不起作用。 如果我从终端运行exe文件,我得到这些错误: 我在项目的虚拟环境中使用pip安装了pyInster。 我将感谢任何帮助。 先谢谢你。