我将所有依赖jar包装在我最后一个jar的lib文件夹中。但是当我使用命令执行像java -cp my.jar MyMainClass时,它说无法加载lib文件夹中的类,这里有什么问题?
由于
答案 0 :(得分:1)
如果您的程序打包为可执行jar,则应该有一个单独的文件夹,其中放置了其他jar依赖项,然后在运行程序时将该文件夹指定为类路径:
java -classpath c:\path\to\dir_with_jars -jar myExecutableJar.jar p1.MainClass
另外:如果你想使用非常规方法在jar文件中打包jar依赖项,你可以将这些依赖项放在可执行jar的ROOT中,而不是放在任何文件夹(lib或其他)中。通过这种方式,它们将有效地位于类路径的根部,因此如果您将jar运行为:
java -cp:. -jar myJar.jar
它应该有用
注意:此答案包含错误,请参阅下面附带的评论。实际上,有一些工具可以让你在jar中包装你的jar依赖项(作为内部jar),但是这将不再像你可以使用默认JDK类加载器运行的常规可执行jar一样工作。相反,你需要一个特殊的classloaded来考虑内部jar。提供此功能的工具通常会自动添加必要的特殊类加载并更新jar清单以使用它。抱歉错误。
答案 1 :(得分:0)
您还可以使用zip来提取存档并查看my.jar以查看其中的内容以及您的MyMain.class是否存在。