java/javac命令行如何同时引用多个包;错误 TypeError: 'JavaPackage' object is not callable 的含义

时间:2022-01-11 01:32:57

出现这类错误提示:'JavaPackage' object is not callable,可以看下所引用的jar包或者class文件是否在java的路径搜索范围内

命令行模式下:javac可以编译*.java为*.class字节码;然后使用java执行字节码

java -help

-cp               <目录和 zip/jar 文件的类搜索路径>
-classpath     <目录和 zip/jar 文件的类搜索路径>
                    用 : 分隔的目录, JAR 档案和 ZIP 档案列表, 用于搜索类文件。

javac -help

-classpath <路径>            指定查找用户类文件和注释处理程序的位置
-cp <路径>                      指定查找用户类文件和注释处理程序的位置

可见当在编译或者运行时,需要使用其他的jar包等,需要使用参数-cp或者-classpath

抛出第二个问题,如何一次引用多个jar包呢?

字节码文件mypackage.class

linux下:冒号

  java -cp myjar.jar:lib/*:. mypackage

   错误方式:java -cp myjar.jar:lib/*.jar:. mypackage

java -cp "Test.jar:lib/*" mypackage

window下:分号

 java -cp myjar.jar;lib/*;. mypackage

java -cp "Test.jar;lib/*" mypackage

或者使用:tr命令的作用是从标准输入中替换、缩减和/或删除字符,并将结果写到标准输出。

java -cp $(echo lib/*.jar | tr ' ' ':')


参考:

1、https://*.com/questions/13018100/execute-jar-file-with-multiple-classpath-libraries-from-command-prompt

2、https://*.com/questions/219585/including-all-the-jars-in-a-directory-within-the-java-classpath