Glassfish 4:使用 Maven 构建时部署问题
Glassfish 4: deploy problems when building with Maven
我在 Glassfish 4 上部署从 ant 转换为 maven 的项目时遇到问题。当我使用 build.xml 生成 war 文件时,我可以毫无问题地部署它,但是当我使用 Maven 创建 war 文件并尝试部署它时,出现以下异常:
Error occurred during deployment: Exception while loading the app : java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: org.apache.catalina.LifecycleException: java.lang.ArrayIndexOutOfBoundsException: 48188.
我认为 pom.xml 文件中存在一些问题。我会把它粘贴在这里,但它是一个很大的文件(该项目使用了很多依赖项),所以我不确定它是否会有很大帮助。什么可能导致该异常?
pom.xml 文件:
http://pastebin.com/aQS2inaQ
附件
克里斯·迈克尔斯
- galssfish 服务器的 jdk 版本是什么?
- 您用来构建应用程序的 jdk 版本是什么?
- 你有没有在你的项目中添加 Maven 依赖项?
- Jre系统库更新maven依赖后
应用程序的变化 automatically.so 你检查了吗
java 更新 maven 后构建路径中的 jre 系统库版本
依赖项 ?
比较Ant和Maven创建的2个WAR的内容。 WEB-INF/lib
中的 jar 文件列表应该类似。我猜想maven版本包含的内容比Ant版本多得多。
您应该为仅提供 API 且已在 GlassFish 中可用的依赖项提供 provided
范围:
<dependency>
<groupId>javax.el</groupId>
<artifactId>el-api</artifactId>
<version>1.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.0-api</artifactId>
<version>1.0.1.Final</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.ejb</artifactId>
<version>3.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.faces</artifactId>
<version>2.1.7</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.jboss.spec.javax.transaction</groupId>
<artifactId>jboss-transaction-api_1.1_spec</artifactId>
<version>1.0.0.Final</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-bundle</artifactId>
<version>1.11</version>
<scope>provided</scope>
</dependency>
或者只是删除那些依赖项并将它们替换为
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
<scope>provided</scope>
</dependency>
我在 Glassfish 4 上部署从 ant 转换为 maven 的项目时遇到问题。当我使用 build.xml 生成 war 文件时,我可以毫无问题地部署它,但是当我使用 Maven 创建 war 文件并尝试部署它时,出现以下异常:
Error occurred during deployment: Exception while loading the app : java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: org.apache.catalina.LifecycleException: java.lang.ArrayIndexOutOfBoundsException: 48188.
我认为 pom.xml 文件中存在一些问题。我会把它粘贴在这里,但它是一个很大的文件(该项目使用了很多依赖项),所以我不确定它是否会有很大帮助。什么可能导致该异常?
pom.xml 文件: http://pastebin.com/aQS2inaQ
附件
克里斯·迈克尔斯
- galssfish 服务器的 jdk 版本是什么?
- 您用来构建应用程序的 jdk 版本是什么?
- 你有没有在你的项目中添加 Maven 依赖项?
- Jre系统库更新maven依赖后 应用程序的变化 automatically.so 你检查了吗 java 更新 maven 后构建路径中的 jre 系统库版本 依赖项 ?
比较Ant和Maven创建的2个WAR的内容。 WEB-INF/lib
中的 jar 文件列表应该类似。我猜想maven版本包含的内容比Ant版本多得多。
您应该为仅提供 API 且已在 GlassFish 中可用的依赖项提供 provided
范围:
<dependency>
<groupId>javax.el</groupId>
<artifactId>el-api</artifactId>
<version>1.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.0-api</artifactId>
<version>1.0.1.Final</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.ejb</artifactId>
<version>3.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.faces</artifactId>
<version>2.1.7</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.jboss.spec.javax.transaction</groupId>
<artifactId>jboss-transaction-api_1.1_spec</artifactId>
<version>1.0.0.Final</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-bundle</artifactId>
<version>1.11</version>
<scope>provided</scope>
</dependency>
或者只是删除那些依赖项并将它们替换为
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
<scope>provided</scope>
</dependency>