有没有办法将所有 jar 文件包含在类路径的目录中?
我正在尝试,它无法找到肯定在这些罐子中的类文件。是否需要将每个 jar 文件单独添加到类路径中?java -classpath lib/*.jar:. 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 6 或更高版本时,类路径选项支持通配符。请注意以下几点:
"
)*
*.jar
窗户
java -cp "Test.jar;lib/*" my.package.MainClass
Unix
java -cp "Test.jar:lib/*" my.package.MainClass
这类似于 Windows,但使用 代替 。如果不能使用通配符,则允许使用以下语法(其中 是包含所有 Java 归档文件的目录)::
;
bash
lib
java -cp "$(printf %s: lib/*.jar)"
(请注意,使用类路径与该选项不兼容。另请参阅:从命令提示符执行具有多个类路径库的 jar 文件)-jar
了解通配符
从类路径文档中:
类路径条目可以包含基名通配符,这等效于指定目录中扩展名为 or 的所有文件
的列表。例如,
类路径条目指定名为 foo 的
目录中的所有 JAR 文件。仅由 组成的类路径条目将展开为当前目录中所有
jar 文件的列表。*
.jar
.JAR
foo/*
*
包含的类路径条目与类文件不匹配。要在单个目录 foo 中同时匹配类和 JAR 文件,请使用
或 。选择的顺序决定了 中的
类和资源是在 中的 JAR 文件之前加载的,反
之亦然。*
foo;foo/*
foo/*;foo
foo
foo
不以递归方式搜索子目录。例如,仅在 中查找 JAR 文件,而不是在 中查找
等。foo/*
foo
foo/bar
foo/baz
未指定目录中的 JAR 文件在
扩展类路径中的枚举顺序,并且可能因平台而异
,甚至在同一台计算机上可能因时而异。构造
良好的应用程序不应依赖于任何特定
顺序。如果需要特定顺序,则可以在类路径中显式枚举 JAR 文件
。通配符的扩展是在调用
程序的主方法之前尽早完成的,而不是在类加载
过程本身的后期完成的。包含
通配符的输入类路径的每个元素都将替换为通过枚举命名目录中的 JAR 文件生成的(可能为空的)元素
序列。例如
,如果目录包含 、 和 ,则
类路径将展开为 ,
并且该字符串将是系统属性
的值。foo
a.jar
b.jar
c.jar
foo/*
foo/a.jar;foo/b.jar;foo/c.jar
java.class.path
环境变量的处理方式与 (或 ) 命令行选项没有任何不同
。也就是说,在所有这些情况下都
尊重通配符。但是,标头中不支持
类路径通配符。CLASSPATH
-classpath
-cp
Class-Path jar-manifest
注意:由于 Java 8 中存在已知错误,Windows 示例必须在条目前面使用反斜杠和尾随星号: https://bugs.openjdk.java.net/browse/JDK-8131329
网友回答:
我们通过部署一个主 jar 文件来解决此问题,该文件包含一个清单 () 文件,该文件指定了与其他所需 jar 的类路径,然后将其与它一起部署。在这种情况下,您只需在运行代码时进行声明。myapp.jar
Manifest.mf
java -jar myapp.jar
因此,如果您将 main 部署到某个目录中,然后将依赖的 jar 放入该目录下的文件夹中,则清单如下所示:jar
lib
Manifest-Version: 1.0
Implementation-Title: myapp
Implementation-Version: 1.0.1
Class-Path: lib/dep1.jar lib/dep2.jar
注意:这是独立于平台的 – 我们可以使用相同的jar在UNIX服务器或Windows PC上启动。
模板简介:该模板名称为【将所有 jar 包含在 Java 类路径的目录中】,大小是暂无信息,文档格式为.编程语言,推荐使用Sublime/Dreamweaver/HBuilder打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【Java】栏目查找您需要的精美模板。