从Linux命令行运行需要额外文件的Java程序

我正在按照这个教程来制作一个与数据库交互的程序。 我被困在我运行它的最后一步。 给出的例子是C:\test>java -cp c:\test\postgresql-8.3-603.jdbc4.jar;c:\test JDBCExample

我的.class文件和我的主目录中的JDBC的.jar。 我试过了

java -cp /home/JohnF/postgresql-9.2-1000.jdbc4.jar;/home/JohnF/QueryDB.class我得到“不能执行二进制文件”
我试过java -cp /home/JohnF/postgresql-9.2-1000.jdbc4.jar;/home/JohnF/QueryDB ,我得到“没有这样的文件或目录”
我试过java -cp /home/JohnF/postgresql-9.2-1000.jdbc4.jar;/home/JohnF QueryDB ,我得到“JohnF是一个目录”

我使用chmod将文件权限设置为777 。 我如何得到这个运行?

您使用分号作为类路径分隔符 – 这在Linux上不起作用。 尝试替换“;” 与“:”在类路径中,它应该工作。

编辑:在这里发生的事情的解释。 在Linux中,“;” 是命令分隔符。 你的线

java -cp /home/JohnF/postgresql-9.2-1000.jdbc4.jar;/home/JohnF QueryDB

真的被扩展为2个逐一执行:

 java -cp /home/JohnF/postgresql-9.2-1000.jdbc4.jar /home/JohnF QueryDB 

第一个什么都不做,成功退出。 其次尝试调用/home/JohnF作为可执行文件,这实际上不是一个可执行文件,而是一个目录!

FIX:使用:而不是;

为什么? * nix环境中的文件分隔符是' ',而不是' ;