是否有一种方法将所有jar文件包含在类路径的目录中?
我正在尝试java -classpath lib/*.jar:。program,它不能找到在这些罐子里的类文件。我是否需要将每个jar文件分别添加到类路径中?
是否有一种方法将所有jar文件包含在类路径的目录中?
我正在尝试java -classpath lib/*.jar:。program,它不能找到在这些罐子里的类文件。我是否需要将每个jar文件分别添加到类路径中?
当前回答
我在一个文件夹里有多个罐子。下面的命令在JDK1.8中对我有用,可以包括文件夹中的所有jar。请注意,如果在类路径中有空格,请在引号中包含
窗户
“C:\My Jars\sdk\lib\*
运行:java -classpath "C:\My Jars\sdk\lib\*; C:\ programs" MyProgram
Linux
编译:javac -classpath "/home/guestuser/My Jars/sdk/lib/*" MyProgram.java
运行:java -classpath "/home/guestuser/My Jars/sdk/lib/*:/home/guestuser/programs" MyProgram
其他回答
你可以试试java -Djava.ext.dirs=jarDirectory http://docs.oracle.com/javase/6/docs/technotes/guides/extensions/spec.html
运行java时用于外部jar的目录
macOS,当前文件夹
Java 13在macOS Mojave…
如果所有的.jar文件都在同一个文件夹中,使用cd将其设置为当前工作目录。与pwd核实。
对于-classpath,首先必须列出应用程序的JAR文件。使用冒号:作为分隔符,附加星号*以获得同一文件夹中的所有其他JAR文件。最后,将类的完整包名与main方法一起传递。
例如,对于一个名为my_app.jar的JAR文件中的一个应用程序,在一个名为com的包中一个名为app的类中有一个主方法。例如,在同一个文件夹中放置一些需要的罐子:
java -classpath my_app.jar:* com.example.App
正确的:
java -classpath "lib/*:." my.package.Program
不正确的:
java -classpath "lib/a*.jar:." my.package.Program
java -classpath "lib/a*:." my.package.Program
java -classpath "lib/*.jar:." my.package.Program
java -classpath lib/*:. my.package.Program
在Windows下,这是有效的:
java -cp "Test.jar;lib/*" my.package.MainClass
这是行不通的:
java -cp "Test.jar;lib/*.jar" my.package.MainClass
注意*.jar,因此*通配符应该单独使用。
在Linux操作系统下,如下所示:
java -cp "Test.jar:lib/*" my.package.MainClass
分隔符是冒号而不是分号。
java命令的参数顺序也很重要:
c:\projects\CloudMirror>java Javaside -cp "jna-5.6.0.jar;.\"
Error: Unable to initialize main class Javaside
Caused by: java.lang.NoClassDefFoundError: com/sun/jna/Callback
与
c:\projects\CloudMirror>java -cp "jna-5.6.0.jar;.\" Javaside
Exception in thread "main" java.lang.UnsatisfiedLinkError: Unable