0

我试图让以下项目在独立的 Jetty 实例中运行:
https
://github.com/stilkov/jetty-weld-jersey-sample 运行提到的 Maven 目标 jetty:run 按预期工作。

我正在使用 Jetty_9_4_28_v20200408(提到的项目使用不同的版本 - 我测试了更新 pom.xml 中提到的 Jetty 版本,我仍然能够运行 jetty:run)。我修改了 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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.innoq.sample</groupId>
    <artifactId>jetty-weld-jersey-sample</artifactId>
    <version>0.1-SNAPSHOT</version>
    <packaging>war</packaging>
    <name>Jetty Weld Jersey Sample Web App</name>

    <properties>
        <jettyVersion>9.4.28.v20200408</jettyVersion>
        <weldVersion>2.2.9.Final</weldVersion>
        <jerseyVersion>2.6</jerseyVersion>
        <JerseyGlassfishCDIVersion>2.6</JerseyGlassfishCDIVersion>
    </properties>


    <dependencies>
        <dependency>
            <groupId>javax.inject</groupId>
            <artifactId>javax.inject</artifactId>
            <version>1</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.ws.rs</groupId>
            <artifactId>javax.ws.rs-api</artifactId>
            <version>2.0.1</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.jboss.weld.servlet</groupId>
            <artifactId>weld-servlet</artifactId>
            <version>${weldVersion}</version>
            <type>jar</type>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.glassfish.jersey.containers</groupId>
            <artifactId>jersey-container-servlet</artifactId>
            <version>${jerseyVersion}</version>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.glassfish.jersey.containers.glassfish</groupId>
            <artifactId>jersey-gf-cdi</artifactId>
            <version>${JerseyGlassfishCDIVersion}</version>
            <scope>runtime</scope>
        </dependency>
    </dependencies>
</project>

但是,这会导致启动时出现以下错误(从 IntelliJ 启动 Jetty):


[2020-05-13 11:44:23,833] Artifact jetty-weld-jersey-sample:war: Artifact is being deployed, please wait...
2020-05-13 23:44:25.512:WARN:oejw.WebAppContext:Scanner-1: Failed startup of context o.e.j.w.WebAppContext@6a6c5585{/jetty-weld-jersey-sample-0.1-SNAPSHOT,file:///$PROJECT_DIR/jetty-weld-jersey-sample-master/target/jetty-weld-jersey-sample-0.1-SNAPSHOT/,UNAVAILABLE}{$PROJECT_DIR/jetty-weld-jersey-sample-master/target/jetty-weld-jersey-sample-0.1-SNAPSHOT.war}
java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy
    at sun.reflect.annotation.AnnotationParser.parseClassArray(AnnotationParser.java:724)
    at sun.reflect.annotation.AnnotationParser.parseArray(AnnotationParser.java:531)
    at sun.reflect.annotation.AnnotationParser.parseMemberValue(AnnotationParser.java:355)
    at sun.reflect.annotation.AnnotationParser.parseAnnotation2(AnnotationParser.java:286)
    at sun.reflect.annotation.AnnotationParser.parseAnnotations2(AnnotationParser.java:120)
    at sun.reflect.annotation.AnnotationParser.parseAnnotations(AnnotationParser.java:72)
    at java.lang.Class.createAnnotationData(Class.java:3521)
    at java.lang.Class.annotationData(Class.java:3510)
    at java.lang.Class.getAnnotation(Class.java:3415)
    at org.eclipse.jetty.annotations.AnnotationConfiguration.createServletContainerInitializerAnnotationHandlers(AnnotationConfiguration.java:574)
    at org.eclipse.jetty.annotations.AnnotationConfiguration.configure(AnnotationConfiguration.java:343)
    at org.eclipse.jetty.webapp.WebAppContext.configure(WebAppContext.java:498)
    at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1404)
    at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:838)
    at org.eclipse.jetty.servlet.ServletContextHandler.doStart(ServletContextHandler.java:275)
    at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:524)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:72)
    at org.eclipse.jetty.deploy.bindings.StandardStarter.processBinding(StandardStarter.java:46)
    at org.eclipse.jetty.deploy.AppLifeCycle.runBindings(AppLifeCycle.java:188)
    at org.eclipse.jetty.deploy.DeploymentManager.requestAppGoal(DeploymentManager.java:513)
    at org.eclipse.jetty.deploy.DeploymentManager.addApp(DeploymentManager.java:154)
    at org.eclipse.jetty.deploy.providers.ScanningAppProvider.fileAdded(ScanningAppProvider.java:173)
    at org.eclipse.jetty.deploy.providers.WebAppProvider.fileAdded(WebAppProvider.java:447)
    at org.eclipse.jetty.deploy.providers.ScanningAppProvider$1.fileAdded(ScanningAppProvider.java:66)
    at org.eclipse.jetty.util.Scanner.reportAddition(Scanner.java:784)
    at org.eclipse.jetty.util.Scanner.reportDifferences(Scanner.java:753)
    at org.eclipse.jetty.util.Scanner.scan(Scanner.java:641)
    at org.eclipse.jetty.util.Scanner$1.run(Scanner.java:558)
    at java.util.TimerThread.mainLoop(Timer.java:555)
    at java.util.TimerThread.run(Timer.java:505)
[2020-05-13 11:44:25,904] Artifact jetty-weld-jersey-sample:war: Artifact is deployed successfully
[2020-05-13 11:44:25,905] Artifact jetty-weld-jersey-sample:war: Deploy took 2,072 milliseconds

如果我开始激活更多的 Jetty 模块,我可能会遇到不同的错误,但我的直觉认为这可能不是必需的。

注意:在日志中,我介绍了 $PROJECT_DIR 用于匿名化。

4

0 回答 0