Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java类路径让我抓狂(找不到我的类)_Java_Classpath_Classloader_Manifest - Fatal编程技术网

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;.