Estoy usando Eclipse y Glassfish 6.1.0, en glassfish tengo que agregar algunas bibliotecas que son importantes para el proyecto, pero he tenido problemas para agregar el commons-fileupload one, encontré que el código de Apache Commons que usa el paquete javax. * el paquete no se compila con el código Jakarta EE 9 y GlassFish 6.1.0 y la carga de archivos comunes depende de javax.servlet y la consola de administración de GlassFish lo usa para cargar implementaciones.
Además, estoy trabajando con:
Cuando intento implementar la aplicación me sale este error:
[2021-12-07T14:34:55.416-0500] [glassfish 6.1] [SEVERE] [AS-WEB-CORE-00108] [jakarta.enterprise.web.core] [tid: _ThreadID=47 _ThreadName=admin-listener(3)] [timeMillis: 1638905695416] [levelValue: 1000] [[ ContainerBase.addChild: start: org.apache.catalina.LifecycleException: java.lang.IllegalArgumentException: java.lang.NoClassDefFoundError: javax/servlet/ServletContextListener at org.apache.catalina.core.StandardContext.start(StandardContext.java:5537) at com.sun.enterprise.web.WebModule.start(WebModule.java:507) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:877) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:860) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:644) ... Caused by: java.lang.IllegalArgumentException: java.lang.NoClassDefFoundError: javax/servlet/ServletContextListener at org.apache.catalina.core.StandardContext.addListener(StandardContext.java:2867) at org.apache.catalina.core.StandardContext.addApplicationListener(StandardContext.java:2073) at com.sun.enterprise.web.TomcatDeploymentConfig.configureApplicationListener(TomcatDeploymentConfig.java:212) at com.sun.enterprise.web.TomcatDeploymentConfig.configureWebModule(TomcatDeploymentConfig.java:71) at com.sun.enterprise.web.WebModuleContextConfig.start(WebModuleContextConfig.java:215) at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:295) at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:122) at org.apache.catalina.core.StandardContext.start(StandardContext.java:5534) ... 73 moreAdjunté los archivos de registro completos pom.xml y server¨.
pom.xml
<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>com.focussscm</groupId> <artifactId>focussSCMParent</artifactId> <version>5.5.0</version> <packaging>pom</packaging> <modules> <module>../focussSCMModel</module> <module>../focussSCMJobsWSClientJobService</module> <module>../focussWSClientDataExchangeService</module> <module>../focussSCMBusiness</module> <module>../focussSCMJobs</module> <module>../focussSCMSecurity</module> <module>../focussSCM</module> </modules> <properties> <!-- Explictly specify a default encoding to avoid relying on the OS locale. --> <project.build.sourceEncoding>Cp1252</project.build.sourceEncoding> <project.build.scriptEncoding>Cp1252</project.build.scriptEncoding> <!-- Artifact versions --> <axis.version>1.4</axis.version> <commons-fileupload.version>1.4</commons-fileupload.version> <commons.discovery.version>0.2</commons.discovery.version> <gwt.version>2.9.0</gwt.version> <gwt-highcharts.version>1.7.0</gwt-highcharts.version> <gwtext.version>2.0.5</gwtext.version> <itext.version>5.4.2</itext.version> <jackson.version>1.8.10</jackson.version> <jakarta-faces.version>3.0.2</jakarta-faces.version> <jakarta.ws.rs.version>3.0.0</jakarta.ws.rs.version> <jakarta.xml.ws.version>4.0.0-RC1</jakarta.xml.ws.version> <jakarta.mail.version>2.0.1</jakarta.mail.version> <jakarta.ejb.version>4.0.0</jakarta.ejb.version> <jakarta.activation-api.version>2.0.1</jakarta.activation-api.version> <javax.wsdl.version>1.5.1</javax.wsdl.version> <jakarta.jws-api.version>3.0.0</jakarta.jws-api.version> <jakartarpc-api.version>1.1.4</jakartarpc-api.version> <jms.version>1.1</jms.version> <jmxri.version>1.2.1</jmxri.version> <jmxtools.version>1.2.1</jmxtools.version> <json.version>20171018</json.version> <jstl.version>1.2</jstl.version> <log4j.version>1.2.17</log4j.version> <poi.version>3.9</poi.version> <org.quartz-scheduler.version>1.5.2</org.quartz-scheduler.version> <servlet-api.version>5.0.0</servlet-api.version> <smartgwt.version>4.0-focuss</smartgwt.version> <spring.version>5.2.8.RELEASE</spring.version> <spring.security.version>5.3.4.RELEASE</spring.security.version> <slf4j-log4j.version>1.8.0-beta4</slf4j-log4j.version> <spring-security-web.version>3.1.4.RELEASE</spring-security-web.version> <spring-webmvc.version>3.0.7.RELEASE</spring-webmvc.version> <gwt.directory>pages/module/gwt</gwt.directory> <!-- Glassfish server variables --> `<glassfish.glassfishDirectory>C:\Development\Apps\Glassfish6</glassfish.glassfishDirectory>` <glassfish.user>User</glassfish.user> <glassfish.adminPassword>123456</glassfish.adminPassword> <glassfish.domain.name>fscmFocuss</glassfish.domain.name> <glassfish.domain.host>localhost</glassfish.domain.host> <glassfish.domain.adminPort>1234</glassfish.domain.adminPort> <!-- Maven GWT compiler version and parameters --> <maven.compiler.version>3.8.0</maven.compiler.version> <maven.compiler.source>11</maven.compiler.source> <maven.compiler.target>11</maven.compiler.target> <maven.resources.version>3.2.0</maven.resources.version> <compiler.style>OBF</compiler.style> <compiler.log.level>INFO</compiler.log.level> <glassfish.port>8081</glassfish.port> <install.plugin.version>2.5.2</install.plugin.version> <!-- Maven War plugin version and parameters --> <war.plugin.version>3.0.0</war.plugin.version> <!-- Maven ear plugin version and parameters --> <ear.plugin.version>2.10.1</ear.plugin.version> <cargo.maven3.plugin.version>1.9.3</cargo.maven3.plugin.version> <!-- ${basedir}/local.properties --> <dropbox.home>${dropbox.home.dir}</dropbox.home> </properties> <dependencyManagement> <dependencies> <!-- package\GWT\gwt-servlet.jar --> <!-- https://mvnrepository.com/artifact/com.google.gwt/gwt-servlet --> <dependency> <groupId>com.google.gwt</groupId> <artifactId>gwt-servlet</artifactId> <version>${gwt.version}</version> <scope>runtime</scope> </dependency> <!-- only_for_building\gwt\gwt-2.5.1\gwt-user.jar --> <!-- https://mvnrepository.com/artifact/com.google.gwt/gwt-user --> <dependency> <groupId>com.google.gwt</groupId> <artifactId>gwt-user</artifactId> <version>${gwt.version}</version> <scope>provided</scope> </dependency> <!-- https://mvnrepository.com/artifact/com.gwtext/gwtext --> <dependency> <groupId>com.gwtext</groupId> <artifactId>gwtext</artifactId> <version>${gwtext.version}</version> </dependency> <!-- https://mvnrepository.com/artifact/com.google.gwt/gwt-dev --> <dependency> <groupId>com.google.gwt</groupId> <artifactId>gwt-dev</artifactId> <version>${gwt.version}</version> <scope>provided</scope> </dependency> <!-- https://mvnrepository.com/artifact/com.google.gwt/gwt-dev --> <dependency> <groupId>com.google.gwt</groupId> <artifactId>gwt</artifactId> <version>${gwt.version}</version> <type>pom</type> </dependency> <!-- only_for_building\gwt\smartgwtpro-4.0\lib --> <dependency> <groupId>com.isomorphic.smartgwt.pro</groupId> <artifactId>smartgwt-pro</artifactId> <version>${smartgwt.version}</version> <exclusions> <!-- Exclusion: required to avoid conflicting with the asm dependency below --> <exclusion> <groupId>asm</groupId> <artifactId>asm</artifactId> </exclusion> </exclusions> </dependency> <!-- only_for_building\gwt\HighCharts\org.moxieapps.gwt.highcharts-1.5.0.jar --> <!-- https://highcharts4gwt.github.io/ --> <dependency> <groupId>org.moxieapps.gwt</groupId> <artifactId>org.moxieapps.gwt.highcharts</artifactId> <version>${gwt-highcharts.version}</version> </dependency> <!-- only_for_building\axis\axis.jar --> <!-- https://mvnrepository.com/artifact/org.apache.axis/axis --> <dependency> <groupId>org.apache.axis</groupId> <artifactId>axis</artifactId> <version>${axis.version}</version> </dependency> <!-- only_for_building\itextpdf-5.4.2 --> <!-- https://mvnrepository.com/artifact/com.itextpdf/itextpdf --> <dependency> <groupId>com.itextpdf</groupId> <artifactId>itextpdf</artifactId> <version>${itext.version}</version> </dependency> <!-- only_for_building\log4j\log4j-1.2.15.jar --> <!-- https://mvnrepository.com/artifact/log4j/log4j --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>${log4j.version}</version> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core --> <!-- <dependency> --> <!-- <groupId>org.apache.logging.log4j</groupId> --> <!-- <artifactId>log4j-core</artifactId> --> <!-- <version>${log4j.version}</version> --> <!-- </dependency> --> <!-- only_for_building\poi-3.9 --> <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>${poi.version}</version> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>${poi.version}</version> </dependency> <!-- package\json --> <!-- https://mvnrepository.com/artifact/org.codehaus.jackson/jackson-core-lgpl --> <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-core-lgpl</artifactId> <version>${jackson.version}</version> </dependency> <!-- https://mvnrepository.com/artifact/org.codehaus.jackson/jackson-mapper-lgpl --> <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-mapper-lgpl</artifactId> <version>${jackson.version}</version> </dependency> <!-- only_for_building\json --> <!-- https://mvnrepository.com/artifact/org.json/json --> <dependency> <groupId>org.json</groupId> <artifactId>json</artifactId> <version>${json.version}</version> </dependency> <!-- https://mvnrepository.com/artifact/jakarta.xml.rpc/jakarta.xml.rpc-api --> <dependency> <groupId>jakarta.xml.rpc</groupId> <artifactId>jakarta.xml.rpc-api</artifactId> <version>${jakartarpc-api.version}</version> </dependency> <!-- https://mvnrepository.com/artifact/jakarta.servlet/jakarta.servlet-api --> <dependency> <groupId>jakarta.servlet</groupId> <artifactId>jakarta.servlet-api</artifactId> <version>${servlet-api.version}</version> <scope>provided</scope> </dependency> <!-- https://mvnrepository.com/artifact/jakarta.ws.rs/jakarta.ws.rs-api --> <dependency> <groupId>jakarta.ws.rs</groupId> <artifactId>jakarta.ws.rs-api</artifactId> <version>${jakarta.ws.rs.version}</version> </dependency> <!-- https://mvnrepository.com/artifact/jakarta.xml.ws/jakarta.xml.ws-api --> <dependency> <groupId>jakarta.xml.ws</groupId> <artifactId>jakarta.xml.ws-api</artifactId> <version>${jakarta.xml.ws.version}</version> </dependency> <!-- https://mvnrepository.com/artifact/jakarta.mail/jakarta.mail-api --> <dependency> <groupId>jakarta.mail</groupId> <artifactId>jakarta.mail-api</artifactId> <version>${jakarta.mail.version}</version> </dependency> <!-- https://mvnrepository.com/artifact/jakarta.ejb/jakarta.ejb-api --> <dependency> <groupId>jakarta.ejb</groupId> <artifactId>jakarta.ejb-api</artifactId> <version>${jakarta.ejb.version}</version> </dependency> <!-- https://mvnrepository.com/artifact/jakarta.jws/jakarta.jws-api --> <dependency> <groupId>jakarta.jws</groupId> <artifactId>jakarta.jws-api</artifactId> <version>${jakarta.jws-api.version}</version> </dependency> <!-- https://mvnrepository.com/artifact/jakarta.activation/jakarta.activation-api --> <dependency> <groupId>jakarta.activation</groupId> <artifactId>jakarta.activation-api</artifactId> <version>${jakarta.activation-api.version}</version> </dependency> <!-- https://mvnrepository.com/artifact/org.glassfish/jakarta.faces --> <dependency> <groupId>org.glassfish</groupId> <artifactId>jakarta.faces</artifactId> <version>${jakarta-faces.version}</version> </dependency> <!-- package\fileUpload\commons-fileupload-1.4.jar --> <!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload --> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>${commons-fileupload.version}</version> </dependency> <!-- https://mvnrepository.com/artifact/org.quartz-scheduler/quartz --> <!-- <dependency> --> <!-- <groupId>org.quartz-scheduler</groupId> --> <!-- <artifactId>quartz</artifactId> --> <!-- <version>${org.quartz-scheduler.version}</version> --> <!-- </dependency> --> <!-- https://mvnrepository.com/artifact/opensymphony/quartz --> <dependency> <groupId>opensymphony</groupId> <artifactId>quartz</artifactId> <version>${org.quartz-scheduler.version}</version> </dependency> <!-- https://mvnrepository.com/artifact/org.quartz-scheduler/quartz --> <!-- <dependency> --> <!-- <groupId>org.quartz-scheduler</groupId> --> <!-- <artifactId>quartz</artifactId> --> <!-- <version>${org.quartz-scheduler.version}</version> --> <!-- </dependency> --> <!-- https://mvnrepository.com/artifact/commons-discovery/commons-discovery --> <dependency> <groupId>commons-discovery</groupId> <artifactId>commons-discovery</artifactId> <version>${commons.discovery.version}</version> </dependency> <!-- https://mvnrepository.com/artifact/org.eclipse.birt.runtime.3_7_1/javax.wsdl --> <dependency> <groupId>org.eclipse.birt.runtime.3_7_1</groupId> <artifactId>javax.wsdl</artifactId> <version>${javax.wsdl.version}</version> </dependency> <!-- Security: Spring Core --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${spring.version}</version> </dependency> <!-- Security: Spring Security --> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-config</artifactId> <version>${spring.security.version}</version> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-web</artifactId> <version>${spring.security.version}</version> </dependency> <!-- Logging: Slf4j --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>${slf4j-log4j.version}</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>${slf4j-log4j.version}</version> </dependency> <dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>${jstl.version}</version> <scope>provided</scope> </dependency> <!-- New --> <!-- https://mvnrepository.com/artifact/org.codehaus.cargo/cargo-maven2-plugin --> <dependency> <groupId>org.codehaus.cargo</groupId> <artifactId>cargo-maven3-plugin</artifactId> <version>${cargo.maven3.plugin.version}</version> </dependency> </dependencies> </dependencyManagement> <build> <sourceDirectory>src</sourceDirectory> <resources> <resource> <directory>src</directory> <excludes> <exclude>*/.java</exclude> </excludes> </resource> </resources> <plugins> <!-- Plugin to compile the project. Included here only to specifically define the source and target versions of the project. Usage: mvn compile (will compile java files to classes) --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>${maven.compiler.version}</version> <configuration> <source>${maven.compiler.source}</source> <target>${maven.compiler.target}</target> </configuration> </plugin> <plugin> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> <version>9.2.14.v20151106</version> </plugin> </plugins> <pluginManagement> <plugins> <plugin> <artifactId>maven-resources-plugin</artifactId> <version>2.6</version> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-install-plugin</artifactId> <version>${install.plugin.version}</version> </plugin> <!-- Plugin to compile GWT Java code to JavaScript. Usage: mvn gwt:compile (will compile GWT files to JavaScript) --> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>gwt-maven-plugin</artifactId> <version>${gwt.version}</version> <executions> <execution> <id>compile</id> <phase>prepare-package</phase> <goals> <goal>compile</goal> <goal>test</goal> </goals> </execution> <execution> <phase>generate-sources</phase> <goals> <goal>generateAsync</goal> </goals> </execution> </executions> <configuration> <!-- Compiler parameters --> <extraJvmArgs>-Xmx1024m -Xss1024k -Dgwt.nowarn.legacy.tools</extraJvmArgs> <draftCompile>true</draftCompile> <debugSuspend>false</debugSuspend> <logLevel>${compiler.log.level}</logLevel> <style>${compiler.style}</style> <!-- Launch parameters with external server --> <!-- Add the app to Glassfish embedded server and set the server to publsh automatically after each compile --> <noServer>true</noServer> <!-- Build parameters --> <webappDirectory>${project.build.directory}/${project.build.finalName}/${gwt.directory}</webappDirectory> <deploy>${project.build.directory}/${project.build.finalName}/${gwt.directory}</deploy> </configuration> </plugin> <plugin> <artifactId>maven-war-plugin</artifactId> <version>${war.plugin.version}</version> <configuration> <warSourceDirectory>WebContent</warSourceDirectory> </configuration> </plugin> <plugin> <groupId>org.codehaus.cargo</groupId> <artifactId>cargo-maven3-plugin</artifactId> <configuration> <container> <containerId>glassfish4x</containerId> <type>installed</type> <!-- Path to directory where glassfish is installed --> <home>${glassfish.glassfishDirectory}</home> </container> <configuration> <type>existing</type> <!-- Path to domains directory --> <home>${glassfish.glassfishDirectory}/glassfish/domains</home> <properties> <!-- Domain name where application will be deployed. --> <cargo.glassfish.domain.name>${glassfish.domain.name}</cargo.glassfish.domain.name> <!-- Glassfish host --> <cargo.hostname>${glassfish.domain.host}</cargo.hostname> <!-- Glassfish admin port --> <cargo.glassfish.admin.port>${glassfish.domain.adminPort}</cargo.glassfish.admin.port> <!-- Glassfish user to authenticate --> <cargo.remote.username>admin</cargo.remote.username> <!-- Glassfish password to authenticate --> <cargo.remote.password>${glassfish.adminPassword}</cargo.remote.password> </properties> </configuration> </configuration> </plugin> <!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.--> <plugin> <groupId>org.eclipse.m2e</groupId> <artifactId>lifecycle-mapping</artifactId> <version>1.0.0</version> <configuration> <lifecycleMappingMetadata> <pluginExecutions> <pluginExecution> <pluginExecutionFilter> <groupId>org.codehaus.mojo</groupId> <artifactId>gwt-maven-plugin</artifactId> <versionRange>[2.8.0,)</versionRange> <goals> <goal>compile</goal> <goal>site</goal> </goals> </pluginExecutionFilter> <action> <ignore></ignore> </action> </pluginExecution> </pluginExecutions> </lifecycleMappingMetadata> </configuration> </plugin> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>properties-maven-plugin</artifactId> <version>1.0.0</version> <executions> <execution> <phase>initialize</phase> <goals> <goal>read-project-properties</goal> </goals> </execution> </executions> </plugin> </plugins> </pluginManagement> </build> </project>Sus problemas se derivan de la incompatibilidad entre Java EE 8 o anterior versus Jakarta EE 9 o posterior.
Parece que la versión oficial más reciente de Apache Commons FileUpload aún depende de las API de Java EE. Sin embargo, mirando el historial de confirmación en GitHub, esta confirmación:
pretende eliminar las dependencias de Java EE y Jakarta EE del código Java. Por lo tanto, si tuviera que verificar la fuente en ese compromiso o posterior, debería poder compilar una versión de commons-fileupload que se ejecutará en Java EE o Jakarta EE.
(Nota: no he probado esto).
Leyendo entre líneas, espero que haya un nuevo lanzamiento oficial de esta biblioteca bastante pronto. Aparentemente, la dependencia de Java EE en commons-fileupload es un bloqueador para algunos otros proyectos de Apache Foundation.
La otra alternativa sería mantener su aplicación en Java EE 8 (o anterior) por ahora y usar GlassFish 5.1 o anterior... que requiere Java 8 en lugar de Java 11.