Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.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/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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.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 添加META-INF/services目录时,jar中没有.class文件_Java_Maven_Jar_Meta Inf - Fatal编程技术网

Java 添加META-INF/services目录时,jar中没有.class文件

Java 添加META-INF/services目录时,jar中没有.class文件,java,maven,jar,meta-inf,Java,Maven,Jar,Meta Inf,我刚刚开始使用Maven,在创建所有类的JAR时遇到了麻烦。事实上,我必须包含一个位于WEB-INF/services/javax.annotation.processing.Processor 我已经测试了这个问题的不同问题,当我删除/services目录时,JAR包含了所有的.class文件 我读到它可能是一个错误的Maven文件夹结构,但当我有services目录时,问题就出现了 下面是我的pom.xml文件的摘录,该文件使用了以下资源: ${MyResources} META-INF/

我刚刚开始使用Maven,在创建所有类的JAR时遇到了麻烦。事实上,我必须包含一个位于
WEB-INF/services/javax.annotation.processing.Processor

我已经测试了这个问题的不同问题,当我删除
/services
目录时,JAR包含了所有的.class文件

我读到它可能是一个错误的Maven文件夹结构,但当我有
services
目录时,问题就出现了

下面是我的pom.xml文件的摘录,该文件使用了以下资源:


${MyResources}
META-INF/**/*
maven控制台告诉我资源已成功复制,因此我假设这部分不是问题所在


有什么想法吗?

嘿,你想用这样的东西:

<build>
  <sourceDirectory>src/main/java (or your .java you want to compile)</sourceDirectory>
   <resources>
    <resource>
     <directory>src/main/resources/META-INF/</directory>
     <targetPath>META-INF</targetPath>
    </resource>
   </resources>
</build>

src/main/java(或您要编译的.java)
src/main/resources/META-INF/
META-INF

sourceDirectory告诉maven要编译什么并将其放入目标文件夹(和jar中)。然后资源说,将所有内容都放在我的META-INF/文件夹中,并将其放在jar文件的META-INF文件夹中。

我调查并解决了这个问题:它是一个bug-->我添加了编译器选项-proc:none,现在可以正常工作了。希望它能帮助别人

对于*.jar或*.war文件来说,能够引导您找到解决方案的是,在创建归档文件之后,例如,使用WinRAR打开它,并检查其内容


在此之后,您可以像前面提到的那样,在
pom.xml
文件中包含必要的资源。

您的源文件位于哪里?它们位于src/main/java;我的资源位于src/main/resources中,因此META-INF目录位于src/main/resources/META-INF/services/*中,因此我认为您不需要显式定义includetag@JuriexFF您可以发布完整的pom.xml吗?您还可以检查类文件是否在
target/classes
目录中生成吗?我同意您的意见,但使用此解决方案,我的.jar文件不包含任何.class文件!这应该是不必要的,du优先于配置。@Thomas你能解释一下吗?默认情况下,Maven使用
src/main/java
作为源目录,默认情况下使用
src/main/resources
作为资源目录。因此,除非你需要一些特别的或不同的东西,没有必要特别说明。这就是我需要的。在我的例子中,我必须将
设置为
META-INF/services