java 构建后生成的目标文件不包含必须存在的所有已编译类
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/7644771/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Generated target files after build doesn't contain all the compiled classes that must have been there
提问by Rajat Gupta
While building the project, the console shows that the source packages were compiled(the one inside px10
package)
在构建项目时,控制台显示源包已编译(px10
包内的那个)
However if I see the target files generated, none of the classes are there from source package.
但是,如果我看到生成的目标文件,则源包中没有任何类。
- tried
clean & build
several times but doesnt help - cleared the netbeans cache from
.../var/cache/
- 尝试
clean & build
了几次但没有帮助 - 清除了 netbeans 缓存
.../var/cache/
Here is the log generated while building the web app
这是构建 Web 应用程序时生成的日志
------------------------------------------------------------------------
Building ABCApp Java EE 6 Webapp 1.0
------------------------------------------------------------------------
[antrun:run]
Executing tasks
Executed tasks
[resources:resources]
Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent!
Copying 13 resources
[compiler:compile]
File encoding has not been set, using platform encoding Cp1252, i.e. build is platform dependent!
Compiling 81 source files to C:\dev\ABCApp\target\classes
px10/BusinessLayer/LOBERs/connect.java:[248,38] ';' expected
px10/BusinessLayer/User/User_2.java:[127,52] '.class' expected
[resources:testResources]
Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent!
Copying 1 resource
[compiler:testCompile]
Nothing to compile - all classes are up to date
[surefire:test]
Surefire report directory: C:\dev\ABCApp\target\surefire-reports
-------------------------------------------------------
T E S T S
-------------------------------------------------------
There are no tests to run.
Results :
Tests run: 0, Failures: 0, Errors: 0, Skipped: 0
[war:war]
Packaging webapp
Assembling webapp [ABCApp] in [C:\dev\ABCApp\target\ABCApp]
Processing war project
Copying webapp resources [C:\dev\ABCApp\src\main\webapp]
Webapp assembled in [1841 msecs]
Building war: C:\dev\ABCApp\target\ABCApp.war
Warning: selected war files include a WEB-INF/web.xml which will be ignored
(webxml attribute is missing from war task, or ignoreWebxml attribute is specified as 'true')
[install:install]
Installing C:\dev\ABCApp\target\ABCApp.war to C:\dev\mavenRepository\w93\ABCApp.0\ABCApp-1.0.war
Installing C:\dev\ABCApp\pom.xml to C:\dev\mavenRepository\w93\ABCApp.0\ABCApp-1.0.pom
------------------------------------------------------------------------
BUILD SUCCESS
------------------------------------------------------------------------
Total time: 9.053s
Finished at: Tue Oct 04 11:49:46 IST 2011
Final Memory: 6M/15M
------------------------------------------------------------------------
This issue seems to be arising since I have deleted a folder named classes
from inside web-inf
folder which I myself had created.
这个问题似乎是因为我删除了一个classes
从web-inf
我自己创建的文件夹内部命名的文件夹。
Here is the effective POM for the project:
这是项目的有效 POM:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>w93</groupId>
<artifactId>ABCApp</artifactId>
<version>1.0</version>
<packaging>war</packaging>
<name>ABCApp Java EE 6 Webapp</name>
<url>http://maven.apache.org</url>
<properties>
<netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-api</artifactId>
<version>2.1.3_01</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-impl</artifactId>
<version>2.1.3_01</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-web-api</artifactId>
<version>6.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>0.9.30</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.primefaces</groupId>
<artifactId>primefaces</artifactId>
<version>3.0.M3</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
<version>2.4.1</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.2.2</version>
<scope>compile</scope>
</dependency>
</dependencies>
<repositories>
<repository>
<id>java.net2</id>
<name>Repository hosting the jee6 artifacts</name>
<url>http://download.java.net/maven/2</url>
</repository>
<repository>
<id>jsf20</id>
<name>Repository for library Library[jsf20]</name>
<url>http://download.java.net/maven/2/</url>
</repository>
<repository>
<id>prime-repo</id>
<name>PrimeFaces Maven Repository</name>
<url>http://repository.primefaces.org</url>
</repository>
<repository>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>central</id>
<name>Maven Repository Switchboard</name>
<url>http://repo1.maven.org/maven2</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<releases>
<updatePolicy>never</updatePolicy>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>central</id>
<name>Maven Plugin Repository</name>
<url>http://repo1.maven.org/maven2</url>
</pluginRepository>
</pluginRepositories>
<build>
<sourceDirectory>c:\dev\ABCApp\src\main\java</sourceDirectory>
<scriptSourceDirectory>c:\dev\ABCApp\src\main\scripts</scriptSourceDirectory>
<testSourceDirectory>c:\dev\ABCApp\src\test\java</testSourceDirectory>
<outputDirectory>c:\dev\ABCApp\target\classes</outputDirectory>
<testOutputDirectory>c:\dev\ABCApp\target\test-classes</testOutputDirectory>
<resources>
<resource>
<directory>c:\dev\ABCApp\src\main\resources</directory>
</resource>
</resources>
<testResources>
<testResource>
<directory>c:\dev\ABCApp\src\test\resources</directory>
</testResource>
</testResources>
<directory>c:\dev\ABCApp\target</directory>
<finalName>ABCApp</finalName>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.3</version>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2-beta-5</version>
</plugin>
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.1</version>
</plugin>
<plugin>
<artifactId>maven-release-plugin</artifactId>
<version>2.0</version>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<executions>
<execution>
<id>default-testCompile</id>
<phase>test-compile</phase>
<goals>
<goal>testCompile</goal>
</goals>
<configuration>
<compilerArguments>
<bootclasspath>${settings.localRepository}/javax/javaee-endorsed-api/6.0/javaee-endorsed-api-6.0.jar;C:\Program Files\Java\jdk1.6.0_23\jre\lib\resources.jar;C:\Program Files\Java\jdk1.6.0_23\jre\lib\rt.jar;C:\Program Files\Java\jdk1.6.0_23\jre\lib\sunrsasign.jar;C:\Program Files\Java\jdk1.6.0_23\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.6.0_23\jre\lib\jce.jar;C:\Program Files\Java\jdk1.6.0_23\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.6.0_23\jre\lib\modules\jdk.boot.jar;C:\Program Files\Java\jdk1.6.0_23\jre\classes</bootclasspath>
</compilerArguments>
<source>1.6</source>
<target>1.6</target>
<failOnError>false</failOnError>
</configuration>
</execution>
<execution>
<id>default-compile</id>
<phase>compile</phase>
<goals>
<goal>compile</goal>
</goals>
<configuration>
<compilerArguments>
<bootclasspath>${settings.localRepository}/javax/javaee-endorsed-api/6.0/javaee-endorsed-api-6.0.jar;C:\Program Files\Java\jdk1.6.0_23\jre\lib\resources.jar;C:\Program Files\Java\jdk1.6.0_23\jre\lib\rt.jar;C:\Program Files\Java\jdk1.6.0_23\jre\lib\sunrsasign.jar;C:\Program Files\Java\jdk1.6.0_23\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.6.0_23\jre\lib\jce.jar;C:\Program Files\Java\jdk1.6.0_23\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.6.0_23\jre\lib\modules\jdk.boot.jar;C:\Program Files\Java\jdk1.6.0_23\jre\classes</bootclasspath>
</compilerArguments>
<source>1.6</source>
<target>1.6</target>
<failOnError>false</failOnError>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-endorsed-api</artifactId>
<version>6.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
<configuration>
<compilerArguments>
<bootclasspath>${settings.localRepository}/javax/javaee-endorsed-api/6.0/javaee-endorsed-api-6.0.jar;C:\Program Files\Java\jdk1.6.0_23\jre\lib\resources.jar;C:\Program Files\Java\jdk1.6.0_23\jre\lib\rt.jar;C:\Program Files\Java\jdk1.6.0_23\jre\lib\sunrsasign.jar;C:\Program Files\Java\jdk1.6.0_23\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.6.0_23\jre\lib\jce.jar;C:\Program Files\Java\jdk1.6.0_23\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.6.0_23\jre\lib\modules\jdk.boot.jar;C:\Program Files\Java\jdk1.6.0_23\jre\classes</bootclasspath>
</compilerArguments>
<source>1.6</source>
<target>1.6</target>
<failOnError>false</failOnError>
</configuration>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.1.1</version>
<executions>
<execution>
<id>default-war</id>
<phase>package</phase>
<goals>
<goal>war</goal>
</goals>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</execution>
</executions>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.3</version>
<executions>
<execution>
<id>compile-protoc</id>
<phase>generate-sources</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<mkdir dir="src/main/resources/protocolBuffers/compiled" />
<path id="proto.path">
<fileset dir="src/main/proto">
<include name="**/*.proto" />
</fileset>
</path>
<pathconvert pathsep=" " property="proto.files" refid="proto.path" />
<exec executable="src/main/resources/protocolBuffers/compiler/protoc" failonerror="true">
<arg value="--java_out=src/main/resources/" />
<arg value="-Ic:\dev\ABCApp/" />
<arg line="${proto.files}" />
</exec>
</tasks>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>2.4.1</version>
<executions>
<execution>
<id>default-clean</id>
<phase>clean</phase>
<goals>
<goal>clean</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.3.1</version>
<executions>
<execution>
<id>default-install</id>
<phase>install</phase>
<goals>
<goal>install</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.4.3</version>
<executions>
<execution>
<id>default-resources</id>
<phase>process-resources</phase>
<goals>
<goal>resources</goal>
</goals>
</execution>
<execution>
<id>default-testResources</id>
<phase>process-test-resources</phase>
<goals>
<goal>testResources</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.7.2</version>
<executions>
<execution>
<id>default-test</id>
<phase>test</phase>
<goals>
<goal>test</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.5</version>
<executions>
<execution>
<id>default-deploy</id>
<phase>deploy</phase>
<goals>
<goal>deploy</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-site-plugin</artifactId>
<version>2.0.1</version>
<executions>
<execution>
<id>default-site</id>
<phase>site</phase>
<goals>
<goal>site</goal>
</goals>
<configuration>
<outputDirectory>c:\dev\ABCApp\target\site</outputDirectory>
<reportPlugins>
<reportPlugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-project-info-reports-plugin</artifactId>
</reportPlugin>
</reportPlugins>
</configuration>
</execution>
<execution>
<id>default-deploy</id>
<phase>site-deploy</phase>
<goals>
<goal>deploy</goal>
</goals>
<configuration>
<outputDirectory>c:\dev\ABCApp\target\site</outputDirectory>
<reportPlugins>
<reportPlugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-project-info-reports-plugin</artifactId>
</reportPlugin>
</reportPlugins>
</configuration>
</execution>
</executions>
<configuration>
<outputDirectory>c:\dev\ABCApp\target\site</outputDirectory>
<reportPlugins>
<reportPlugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-project-info-reports-plugin</artifactId>
</reportPlugin>
</reportPlugins>
</configuration>
</plugin>
</plugins>
</build>
<reporting>
<outputDirectory>c:\dev\ABCApp\target\site</outputDirectory>
</reporting>
<profiles>
<profile>
<id>endorsed</id>
<activation>
<property>
<name>sun.boot.class.path</name>
</property>
</activation>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<dependencies>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-endorsed-api</artifactId>
<version>6.0</version>
</dependency>
</dependencies>
<configuration>
<compilerArguments>
<bootclasspath>${settings.localRepository}/javax/javaee-endorsed-api/6.0/javaee-endorsed-api-6.0.jar;C:\Program Files\Java\jdk1.6.0_23\jre\lib\resources.jar;C:\Program Files\Java\jdk1.6.0_23\jre\lib\rt.jar;C:\Program Files\Java\jdk1.6.0_23\jre\lib\sunrsasign.jar;C:\Program Files\Java\jdk1.6.0_23\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.6.0_23\jre\lib\jce.jar;C:\Program Files\Java\jdk1.6.0_23\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.6.0_23\jre\lib\modules\jdk.boot.jar;C:\Program Files\Java\jdk1.6.0_23\jre\classes</bootclasspath>
</compilerArguments>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>
采纳答案by Rajat Gupta
I found that the issue was due to some of the uncompilable classes inside the source packages because of that none of classes were being copied to the /target/classes/
folder. On removing the uncompilable source code I found it to be working fine.
我发现这个问题是由于源包中的一些不可编译的类造成的,因为没有任何类被复制到/target/classes/
文件夹中。在删除无法编译的源代码后,我发现它运行良好。
回答by Coral
This also occurs with certain versions of the maven-compiler-plugin
某些版本的 maven-compiler-plugin 也会发生这种情况
The following fix resolved the issue for me and maven now correctly reports compiler errors. With the commented version below, maven would build successfully despite uncompilable code.
以下修复为我解决了这个问题,maven 现在可以正确报告编译器错误。使用下面的注释版本,尽管代码无法编译,maven 仍会成功构建。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.0</version>
<!--This version will happily build successfully when the code fails to compile-->
<!--<version>3.1</version>-->
</plugin>
回答by Raghuram
maven does not place generated contents in src/main/webapp/WEB-INF/classes
folder.
maven 不会将生成的内容放在src/main/webapp/WEB-INF/classes
文件夹中。
By default (and from the pom snippet above), it places the compiled classes in target/classes
folder. In case of a war project, maven war plugin
copies the classes to WEB-INF/classes
folder within the webapp.
默认情况下(以及从上面的 pom 片段),它将编译的类放在target/classes
文件夹中。如果是War项目,maven war plugin
请将类复制到 WEB-INF/classes
web 应用程序中的文件夹。
So, in your case, check the following folders:
因此,在您的情况下,请检查以下文件夹:
- C:\dev\ABCApp\target\classes
- C:\dev\ABCApp\target\ABCApp\WEB-INF\classes
- C:\dev\ABCApp\target\classes
- C:\dev\ABCApp\target\ABCApp\WEB-INF\classes
回答by Bheem Singh
If package not creating in classes folder while code building maven project with spring boot application. This also occurs with certain versions of the maven-compiler-plugin
如果在使用 Spring Boot 应用程序编写 Maven 项目时未在 classes 文件夹中创建包。某些版本的 maven-compiler-plugin 也会发生这种情况
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.0</version>
<!--This version will happily build successfully when the code fails to compile-->
<!--<version>3.1</version>-->
<configuration>
<!--<skipMain>true</skipMain>-->
<skip>true</skip>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>