Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.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
外部路径上带有库的Maven可执行jar_Maven_Jar - Fatal编程技术网

外部路径上带有库的Maven可执行jar

外部路径上带有库的Maven可执行jar,maven,jar,Maven,Jar,我的jar没有运行,我可以告诉你它试图运行,因为log4j文件试图创建日志文件夹,但是什么都没有发生,日志是空白的 我的问题是jar文件在一个名为bin的文件夹中,库在一个名为lib的文件夹中 我在玩这个游戏: <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <con

我的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>
解决方案

结果是META-INF文件不正确。原因是maven archiver插件使用时间戳作为默认行为重命名快照库

如Maven Archiver文档所示,要覆盖该文件,请使用以下命令:

<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战争插件
真的
真的
假的
com.Main
../lib/

除此之外,我希望人们一开始就发现maven代码很有用,因为它确实有效,只要注意项目中的快照就行了。以下是您可能想尝试/确认/回答的一些事情/问题:

  • 你是从命令行运行这个吗?例如,使用
    java-jar
    还是通过双击文件等方式启动。?如果没有,试着从命令行运行它,看看会发生什么
  • 尝试使用
    mvn exec:java
    查看是否定期启动应用程序(maven-)。看看你是否不熟悉exec插件
  • 您是否可以使用常规的Java
    System.out.println
    而不是日志来确认它是否真正启动?日志大小为零可能是日志配置问题
  • 我看到上面有一些数据库库。您是否可以在基本初始化周围放置一些println(或更好的日志记录,但只有在您确认日志记录实际工作后)语句,以确认您不仅仅是在那里暂停(前提是发生了这样的情况-您没有具体提到任何异常或其他问题)
这在很大程度上取决于实际的应用程序代码,但希望上面的一些内容可以帮助您找出问题所在


作为旁注,您的主类真的是
com.main
?如果是,我可以建议将其更改为更合适的格式,例如
com.yourdomain.yourapp.Main
或类似的格式。并不是说这会改变上述结果,只是一个风格上的注释。

清单文件看起来如何?还有,你真的把依赖jar放在了lib文件夹中了吗?所有的东西都在那里,清单看起来很好,只是现在附加到edit上你是对的,这是一个META-INF问题,我的最后一个库是lablib-checkboxtree-3.3-SNAPSHOT.jar,尝试在控制台上运行jar,但找不到库。我尝试删除并重新下载lib,但它一直放置thtat numebr而不是单词SNAPSHOT,为什么?是的,“useUniqueVersions”是对您命名的“时间戳”问题的修复,我有类似的问题。我双击它,因此我没有看到任何错误,现在我使用console,我看到它无法加载上一个库,名称应该是lablib-checkboxtree-3.3-SNAPSHOT,但是maven正在将其更改为lablib-checkboxtree-3.3-20110114.141734-3,我手动更改了lib名称并确认它可以工作,如何更正此问题?不要担心名称不是com.Main;)您是否可以尝试从
.m2
文件夹中删除工件(如果您不熟悉,请参见此:),然后再次尝试
mvn包
?您应该在.m2/repository//lablib checkboxtree/3.3-SNAPSHOT中找到它-只需将该文件夹移到其他地方(作为备份解决方案),然后以以前的方式重新安装它(您是否使用了
mvn install:install file
,或者您在站点上有类似Nexus的东西?)。您应该确认您在那里有lablib-checkboxtree-3.3-SNAPSHOT.jar>并且不要担心名称不是com.Main;)酷:)或者更好地将其部署为非快照版本—如果您能够做到这一点(例如)
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
<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>