appengine:针对 java 11 运行

问题描述 投票:0回答:1

我已将旧版 Google 应用引擎从 Java 8 迁移到 11,但在使用 maven 命令运行本地开发服务器时遇到问题:

mvn appengine:run

我已将 pom.xml 文件中的所有依赖项更新为最新。我收到以下 java 错误:

[INFO] GCLOUD: java.lang.NoClassDefFoundError: jakarta/servlet/Filter
[INFO] GCLOUD:  at java.base/java.lang.ClassLoader.defineClass1(Native Method)
[INFO] GCLOUD:  at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1016)
[INFO] GCLOUD:  at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174)
[INFO] GCLOUD:  at java.base/java.net.URLClassLoader.defineClass(URLClassLoader.java:555)
[INFO] GCLOUD:  at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:458)
[INFO] GCLOUD:  at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:452)
[INFO] GCLOUD:  at java.base/java.security.AccessController.doPrivileged(Native Method)
[INFO] GCLOUD:  at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:451)
[INFO] GCLOUD:  at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:588)
[INFO] GCLOUD:  at com.google.appengine.tools.development.IsolatedAppClassLoader.loadClass(IsolatedAppClassLoader.java:215)
[INFO] GCLOUD:  at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
[INFO] GCLOUD:  at org.eclipse.jetty.util.Loader.loadClass(Loader.java:64)
[INFO] GCLOUD:  at org.eclipse.jetty.servlet.BaseHolder.doStart(BaseHolder.java:89)
[INFO] GCLOUD:  at org.eclipse.jetty.servlet.ServletHolder.doStart(ServletHolder.java:369)
[INFO] GCLOUD:  at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73)
[INFO] GCLOUD:  at org.eclipse.jetty.servlet.ServletHandler.lambda$initialize$0(ServletHandler.java:749)
[INFO] GCLOUD:  at java.base/java.util.stream.SortedOps$SizedRefSortingSink.end(SortedOps.java:357)
[INFO] GCLOUD:  at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:485)
[INFO] GCLOUD:  at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
[INFO] GCLOUD:  at java.base/java.util.stream.StreamSpliterators$WrappingSpliterator.forEachRemaining(StreamSpliterators.java:312)
[INFO] GCLOUD:  at java.base/java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:735)
[INFO] GCLOUD:  at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:658)
[INFO] GCLOUD:  at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:774)
[INFO] GCLOUD:  at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:379)
[INFO] GCLOUD:  at org.eclipse.jetty.webapp.WebAppContext.startWebapp(WebAppContext.java:1449)
[INFO] GCLOUD:  at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1414)
[INFO] GCLOUD:  at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:916)
[INFO] GCLOUD:  at org.eclipse.jetty.servlet.ServletContextHandler.doStart(ServletContextHandler.java:288)
[INFO] GCLOUD:  at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:524)
[INFO] GCLOUD:  at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73)
[INFO] GCLOUD:  at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169)
[INFO] GCLOUD:  at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:110)
[INFO] GCLOUD:  at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:97)
[INFO] GCLOUD:  at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73)
[INFO] GCLOUD:  at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169)
[INFO] GCLOUD:  at org.eclipse.jetty.server.Server.start(Server.java:423)
[INFO] GCLOUD:  at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:110)
[INFO] GCLOUD:  at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:97)
[INFO] GCLOUD:  at org.eclipse.jetty.server.Server.doStart(Server.java:387)
[INFO] GCLOUD:  at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73)
[INFO] GCLOUD:  at com.google.appengine.tools.development.jetty9.JettyContainerService.startContainer(JettyContainerService.java:366)
[INFO] GCLOUD:  at com.google.appengine.tools.development.AbstractContainerService.startup(AbstractContainerService.java:293)
[INFO] GCLOUD:  at com.google.appengine.tools.development.AutomaticInstanceHolder.startUp(AutomaticInstanceHolder.java:42)
[INFO] GCLOUD:  at com.google.appengine.tools.development.AbstractModule.startup(AbstractModule.java:102)
[INFO] GCLOUD:  at com.google.appengine.tools.development.Modules.startup(Modules.java:118)
[INFO] GCLOUD:  at com.google.appengine.tools.development.DevAppServerImpl.doStart(DevAppServerImpl.java:284)
[INFO] GCLOUD:  at com.google.appengine.tools.development.DevAppServerImpl.access$000(DevAppServerImpl.java:57)
[INFO] GCLOUD:  at com.google.appengine.tools.development.DevAppServerImpl$1.run(DevAppServerImpl.java:233)
[INFO] GCLOUD:  at com.google.appengine.tools.development.DevAppServerImpl$1.run(DevAppServerImpl.java:231)
[INFO] GCLOUD:  at java.base/java.security.AccessController.doPrivileged(Native Method)
[INFO] GCLOUD:  at com.google.appengine.tools.development.DevAppServerImpl.start(DevAppServerImpl.java:231)
[INFO] GCLOUD:  at com.google.appengine.tools.development.DevAppServerMain$StartAction.apply(DevAppServerMain.java:405)
[INFO] GCLOUD:  at com.google.appengine.tools.util.Parser$ParseResult.applyArgs(Parser.java:58)
[INFO] GCLOUD:  at com.google.appengine.tools.development.DevAppServerMain.run(DevAppServerMain.java:258)
[INFO] GCLOUD:  at com.google.appengine.tools.development.DevAppServerMain.main(DevAppServerMain.java:249)
[INFO] GCLOUD: Caused by:
[INFO] GCLOUD: java.lang.ClassNotFoundException: jakarta.servlet.Filter
[INFO] GCLOUD:  at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:476)

pom.xml 文件:

<?xml version="1.0" encoding="UTF-8"?>
<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>
    <packaging>war</packaging>
    <version>1.0</version>

    <groupId>com.house.cards</groupId>
    <artifactId>cardgamesserver</artifactId>

    <properties>
        <appengine.app.version>1</appengine.app.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <prerequisites>
        <maven>3.6.1</maven>
    </prerequisites>

<dependencies>
    <!-- API, java.xml.bind module -->
    <dependency>
        <groupId>jakarta.xml.bind</groupId>
        <artifactId>jakarta.xml.bind-api</artifactId>
        <version>4.0.0</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jaxb</groupId>
        <artifactId>jaxb-runtime</artifactId>
        <version>4.0.2</version>
    </dependency>
    <dependency>
        <groupId>javax.xml.bind</groupId>
        <artifactId>jaxb-api</artifactId>
        <version>2.3.0</version>
    </dependency>
    <dependency>
        <groupId>com.sun.xml.bind</groupId>
        <artifactId>jaxb-core</artifactId>
        <version>4.0.2</version>
    </dependency>
    <dependency>
        <groupId>com.sun.xml.bind</groupId>
        <artifactId>jaxb-impl</artifactId>
        <version>4.0.2</version>
    </dependency>
    <dependency>
        <groupId>javax.ws.rs</groupId>
        <artifactId>javax.ws.rs-api</artifactId>
        <version>2.1.1</version>
    </dependency>
    <dependency>
        <groupId>com.google.appengine</groupId>
        <artifactId>appengine-api-1.0-sdk</artifactId>
        <version>2.0.14</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.containers</groupId>
        <artifactId>jersey-container-servlet-core</artifactId>
        <version>3.1.1</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.media</groupId>
        <artifactId>jersey-media-moxy</artifactId>
        <version>3.1.1</version>
    </dependency>
    <dependency>
        <groupId>com.googlecode.objectify</groupId>
        <artifactId>objectify</artifactId>
        <version>5.1.5</version>
    </dependency>   
</dependencies>

    <build>
        <outputDirectory>${project.build.directory}/${project.build.finalName}/WEB-INF/classes</outputDirectory>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>versions-maven-plugin</artifactId>
                <version>2.1</version>
                <executions>
                    <execution>
                        <phase>compile</phase>
                        <goals>
                            <goal>display-dependency-updates</goal>
                            <goal>display-plugin-updates</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <version>3.2</version>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>11</source>
                    <target>11</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.6</version>
            </plugin>
            <plugin>
                <groupId>com.google.cloud.tools</groupId>
                <artifactId>appengine-maven-plugin</artifactId>
                <version>2.4.4</version>
                <configuration>
                    <projectId>cardgamesserver</projectId>
                    <version>1</version>
                    <cloudSdkVersion>429.0.0</cloudSdkVersion>
                    <gcloudMode>beta</gcloudMode>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

任何关于我缺少让本地主机服务器运行的帮助都会非常有帮助。 谢谢 蒂姆

java google-app-engine
1个回答
0
投票

我发现我需要一整套 5 个 Glassfish 依赖项才能使其正常工作,并删除了其他一些依赖项。下面全套(对于我的基本应用程序):

   <dependencies>
        <!-- Compile/runtime dependencies -->
        <dependency>
            <groupId>javax.ws.rs</groupId>
            <artifactId>javax.ws.rs-api</artifactId>
            <version>2.1.1</version>
        </dependency>
        <dependency>
            <groupId>com.google.appengine</groupId>
            <artifactId>appengine-api-1.0-sdk</artifactId>
            <version>2.0.14</version>
        </dependency>
        
        <dependency>
            <groupId>org.glassfish.jersey.containers</groupId>
            <artifactId>jersey-container-servlet</artifactId>
            <version>2.31</version>
        </dependency>
                <dependency>
            <groupId>org.glassfish.jersey.core</groupId>
            <artifactId>jersey-client</artifactId>
            <version>2.31</version>
        </dependency>
        <dependency>
            <groupId>org.glassfish.jersey.inject</groupId>
            <artifactId>jersey-hk2</artifactId>
            <version>2.31</version>
        </dependency>
        <dependency>
            <groupId>org.glassfish.jersey.containers</groupId>
            <artifactId>jersey-container-servlet-core</artifactId>
            <version>2.31</version>
        </dependency>
        <dependency>
            <groupId>org.glassfish.jersey.media</groupId>
            <artifactId>jersey-media-moxy</artifactId>
            <version>2.31</version>
        </dependency>
        
        <dependency>
            <groupId>com.googlecode.objectify</groupId>
            <artifactId>objectify</artifactId>
            <version>5.1.5</version>
            <!--<version>6.0.7</version>  -->
        </dependency>   
    </dependencies>
© www.soinside.com 2019 - 2024. All rights reserved.