Bla*_*dez 8 java wildcard classpath
我正在运行一个应该执行main方法的shell脚本:
java -classpath /path/to/app/conf/lib/nameJar* com.example.ClassTest
Run Code Online (Sandbox Code Playgroud)
在这一点上,我得到了这个例外:
Exception in thread "main" java.lang.NoClassDefFoundError: org/springframework/context/ApplicationContext
Caused by: java.lang.ClassNotFoundException: org.springframework.context.ApplicationContext
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:303)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:316)
Run Code Online (Sandbox Code Playgroud)
这是因为弹簧罐位于另一个文件夹中.所以我改变了脚本:
java -classpath /path/to/app/conf/lib/nameJar*:/path/to/app/lib/spring* com.example.ClassTest
Run Code Online (Sandbox Code Playgroud)
但是使用此脚本,无法找到com.example.ClassTest.关于这个问题的任何想法?
提前致谢
Har*_*non 13
java classpath通配符扩展很不寻常.
来自文档:
了解类路径通配符
类路径条目可以包含基本名称通配符*,它被认为等同于指定扩展名为.jar或.JAR的目录中所有文件的列表.例如,类路径条目foo/*指定名为foo的目录中的所有JAR文件.简单地由*组成的类路径条目扩展为当前目录中所有jar文件的列表.
那么,您需要指定的是:
java -classpath /path/to/app/conf/lib/*:/path/to/app/lib/*
Run Code Online (Sandbox Code Playgroud)
如果您只需要特定的罐子,则需要单独添加.类路径字符串不接受通用通配符像nameJar*,*.jar,spring* 等等.
读取在java类路径中设置多个jar以获取更多信息.
| 归档时间: |
|
| 查看次数: |
11210 次 |
| 最近记录: |