我的jar没有运行,我可以告诉它尝试运行,因为log4j文件管理创建日志文件夹但是没有任何反应并且日志是空白的。
我的问题是我将jar文件放在名为bin的文件夹中,以及名为lib
的文件夹中的库我正在嘲笑这个:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<outputDirectory>${staging.dir}/bin</outputDirectory>
<archive>
<manifest>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
<addClasspath>true</addClasspath>
<mainClass>com.Main</mainClass>
<classpathPrefix>../lib/</classpathPrefix>
</manifest>
</archive>
</configuration>
</plugin>
和
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${staging.dir}/lib</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
我也尝试过使用maven-assembly-plugin,但它包装了jar上的所有东西,我真的需要文件夹bin和lib
我需要设置什么才能使其正常工作?
编辑:META-INF文件
Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Created-By: Apache Maven
Built-By: me
Build-Jdk: 1.6.0_26
Main-Class: com.Main
Class-Path: ../lib/ojdbc6-11.2.0.jar ../lib/sqljdbc4-4.2.0.jar ../lib/
mysql-connector-java-5.1.17.jar ../lib/hibernate-core-3.6.5.Final.jar
../lib/antlr-2.7.6.jar ../lib/commons-collections-3.1.jar ../lib/dom
4j-1.6.1.jar ../lib/hibernate-commons-annotations-3.2.0.Final.jar ../
lib/hibernate-jpa-2.0-api-1.0.0.Final.jar ../lib/jta-1.1.jar ../lib/s
lf4j-api-1.6.1.jar ../lib/hibernate-entitymanager-3.6.5.Final.jar ../
lib/cglib-2.2.jar ../lib/asm-3.1.jar ../lib/javassist-3.12.0.GA.jar .
./lib/slf4j-log4j12-1.6.1.jar ../lib/log4j-1.2.16.jar ../lib/commons-
codec-1.5.jar ../lib/lablib-checkboxtree-3.3-20110114.141734-3.jar
解
结果显示META-INF文件不正确。原因是maven-archiver-plugin使用时间戳重命名SNAPSHOT库作为默认行为
根据Maven Archiver doc的说明覆盖使用它:
<plugins>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
<addClasspath>true</addClasspath>
<useUniqueVersions>false</useUniqueVersions>
<mainClass>com.Main</mainClass>
<classpathPrefix>../lib/</classpathPrefix>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
除此之外,我希望人们在开始时找到有用的maven代码,因为它确实有效,只要注意项目中的SNAPSHOTS
答案 0 :(得分:3)
以上一切似乎都可以。以下是您可能想要/确认/回答的一些事项/问题:
java -jar <your.jar>
或者您正在启动它,例如通过双击文件等?如果没有,请尝试从命令行运行它以查看会发生什么mvn exec:java
查看是否定期启动您的应用(maven-)。如果您不熟悉exec插件,请参阅http://mojo.codehaus.org/exec-maven-plugin/usage.html System.out.println
而不是记录以确认它实际启动?拥有零大小的日志可能是日志配置问题很大程度上取决于实际的应用程序代码,但希望上面的一些内容可以帮助您查明问题。
作为旁注,你的主要课程真的是com.Main
吗?如果是,我可以建议将其更改为更合适的内容 - 例如com.yourdomain.yourapp.Main
或类似的东西。并不是说这会改变上面的结果,只是一种风格的评论。