Java类路径让我抓狂(找不到我的类)
好的,我得到了以下文件树:Java类路径让我抓狂(找不到我的类),java,classpath,classloader,manifest,Java,Classpath,Classloader,Manifest,好的,我得到了以下文件树: <appfolder> - MyApp.jar - lib/ - log.jar - someother.jar - someother.jar - someother2.jar - config.properties - otherfiles.extension 如果调用java-jarmyapp.jar,它总是说lib/log.jar中的所有类都无法加载 以下是我尝试过的组合的一部分: - *.jar lib/* - *.ja
<appfolder>
- MyApp.jar
- lib/
- log.jar
- someother.jar
- someother.jar
- someother2.jar
- config.properties
- otherfiles.extension
如果调用java-jarmyapp.jar,它总是说lib/log.jar中的所有类都无法加载
以下是我尝试过的组合的一部分:
- *.jar lib/*
- *.jar lib/*.jar
- *.jar ./lib/*.jar
- ./*.jar lib/*.jar
- *.jar ./lib/*.jar
- tbc
什么都没用。Java总是告诉我在lib/log.jar中找不到类
我的下一次尝试是通过命令行指定类路径
java-cp“MyApp.jar:lib/*”MyApp.Main
但即使这样也不行。在本例中,Java说它找不到myapp.Main类
我想我在做一些完全错误的事情,因为我发现的方法都不管用。如果我将lib/log.jar中的类放入myApp.jar并启动它,它就会工作。但这不是解决办法
有什么想法吗
编辑:
我不想给每个lib-jar命名。我只希望类加载器在类路径中搜索所需的类。我已经见过很多次了。通过系统变量或
SET CLASSPATH=%CLASSPATH%;MYAPP/LIB;.
然后对Linux执行java-jar MyApp.jar,您应该能够执行以下操作:
java-cp MyApp.jar:lib:someotherjar.jar MyApp.Main
您可以(可选地!)对包含“main”的.jar使用“-jar”,也可以将路径和jar文件的任意组合(.jar文件具有限定路径名)添加到类路径中
这是我的建议
这里有一个问题,我也有同样的问题 默认类路径是当前目录。设置类路径 变量或使用-classpath命令行选项覆盖 默认设置,因此如果要在搜索中包含当前目录 路径,则必须在新设置中包含点(.)
问题在于类路径的构造,不管它是在环境变量中还是在java命令本身中。我不确定,但我认为不能在清单文件中使用通配符。如果您逐字列出所有jar,比如
类路径:lib/a.jar lib/b.jar
,那么它肯定会起作用。作为另一种组合,您可以尝试类路径:lib/**
(请注意,2颗星不是打字错误)
SET CLASSPATH=%CLASSPATH%;MYAPP/LIB;.