我创建了一个包含所有编译内容的jar文件.另外,我的ant构建脚本将所需的lib复制到子文件夹"libs"中.结构如下所示:
MyProgram.jar
libs/
Run Code Online (Sandbox Code Playgroud)
因此,当我尝试运行我的程序时,我收到以下错误:
java -cp ".:/home/user/java/MyProgram/jar/libs" -jar MyProgram.jar
java.lang.ClassNotFoundException: org.postgresql.Driver
at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:186)
at database.PostgresQL.getConnection(PostgresQL.java:38)
at recommender.dao.Creative2IdxDAO.createCreatives2Idx(Creative2IdxDAO.java:19)
at main.Main.calculateCorrelationMatrix(Main.java:51)
at main.Main.main(Main.java:28)
java.lang.NullPointerException
at recommender.dao.Creative2IdxDAO.createCreatives2Idx(Creative2IdxDAO.java:25)
at main.Main.calculateCorrelationMatrix(Main.java:51)
at main.Main.main(Main.java:28)
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
使用Maven war插件,我生成包含以下目录的WAR:
META-INF
-- maven
-- com.abc.def
-- myServlet
-- pom.xml
-- pom.properties
在发布中,我想要排除这个maven目录.我怎样才能做到这一点?
我尝试了最新的maven-war-plugin(2.1-beta-1),它配置了"packagingExcludes",但它没有按照我的意愿工作.
有什么建议?
我使用了Maven中的指令- 如何在jar中添加任意类路径条目以向Class-Path属性添加任意条目.这是我的MANIFEST.MF档案:
Manifest-Version: 1.0
Class-Path: jace-runtime.jar
Main-Class: org.jace.examples.Test
Run Code Online (Sandbox Code Playgroud)
我定义了org.jace.examples.Test,如下所示:
public class Test
{
public static void main(String[] args)
{
System.out.println("classpath: " + System.getProperty("java.class.path"));
System.out.println("PeerExample: " + Class.forName("org.jace.util.ShutdownHook"));
}
}
Run Code Online (Sandbox Code Playgroud)
在哪里org.jace.util.ShutdownHook定义jace-runtime.jar.当我调用时,java -jar peer_example1.jar我得到以下输出:
classpath: peer_example1.jar
线程"main"中的异常java.lang.ClassNotFoundException:org.jace.util.ShutdownHook
换句话说,Java正在将可执行JAR文件添加到类路径中但忽略不计Class-Path.如果我调用java -cp jace-runtime.jar;peer_example1.jar org.jace.examples.Test我得到预期的输出:
classpath: jace-runtime.jar;peer_example1.jar
有任何想法吗?
有没有办法使用onejar-maven-plugin将任意类路径条目添加到JAR文件清单?
我找到了配置maven-jar-plugin来实现这一目标的方法,但似乎没有针对onejar-maven-plugin的选项.
这不是为了找到其他类(否则为什么要使用onejar插件,对吧?),而是找到一个必须在JAR外部的配置文件.
对此有直接的解决方案或解决方法吗?