在Linux中编译并运行Java程序,具有.java文件的路径和外部jar的路径

问题描述 投票:1回答:1

昨天我在这里解决了关于stackoverflow的问题。但是我最后遇到了另一个问题,我将尝试弄清楚:

我在/home/demo/Desktop/xlsToCsv/目录中有一个项目文件夹,其中的内部是Java文件"xlsToCsv.java",而在/home/demo/Desktop/xlsToCsv/jars中还有另一个带有外部jar的目录。

现在,我需要编译并运行程序。昨天我运行了一个命令,假设我已经在/home/demo/Desktop/xlsToCsv/中,并且这些命令是:

javac -cp ".:./jars/*" xlsToCsv.java

java -cp ".:./jars/*" xlsToCsv

问题已解决,我能够顺利运行程序。但是,我的程序应该从根目录运行,即在我打开Linux终端时无需执行“ cd”命令的目录。

所以,当我打开终端时,.java文件的路径是:

/home/demo/Desktop/xlsToCsv/

并且jars文件夹的路径是:

/ home / demo / Desktop / xlsToCsv / jars / *

有人可以向我解释我该怎么做,原因是什么?因为更多的运行该程序,所以我想知道原因并理解java中的classpath机制。

java linux jar javac javacompiler
1个回答
1
投票

避免使用相对的类路径。并且“ ./jars / ”的读入使用绝对路径“ / home / demo / Desktop / xlsToCsv / jars /

编辑:

javac -cp "/home/demo/Desktop/xlsToCsv/jars/*" /home/demo/Desktop/xlsToCsv/xlsToCsv.java

java -cp "/home/demo/Desktop/xlsToCsv/:/home/demo/Desktop/xlsToCsv/jars/*" xlsToCsv
© www.soinside.com 2019 - 2024. All rights reserved.