我正在使用 Jetty 9.0.4v20130625 使用maven-jetty-plugin
. 我已经实现了自己的LoginService
类来处理登录到领域的用户。在其中一条线上,我尝试使用该类,但在执行期间它会在该线上org.eclipse.jetty.util.security.Credential
抛出一个。NoClassDefFoundError
我的target
目录包含部署到 Jetty 实例的所有内容。在其中,该WEB-INF/lib
文件夹不包含jetty-util-9.0.4.v20130625.jar
预期的内容,因为插件应该已经拥有它,所以我相信排除了冲突的 jar。那么是什么导致码头实例找不到这个罐子呢?
我正在使用eclipse,它在代码中没有显示错误。我将其设置为 Maven 项目,Maven 处理依赖项。我将其设置为不打包码头罐子,因为它们应该在部署时由码头提供。这是我的 pom.xml:
<project ...>
...
<packaging>war</packaging>
...
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-webapp</artifactId>
<version>9.0.4.v20130625</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>2.11.2</version>
</dependency>
</dependencies>
<build>
<finalName>...</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>9.0.4.v20130625</version>
<configuration>
<scanIntervalSeconds>10</scanIntervalSeconds>
<webApp>
<contextPath>/...</contextPath>
</webApp>
<login-config>
<auth-method>FORM</auth-method>
<realm-name>Test Realm</realm-name>
<form-login-config>
<form-login-page>/loginAuth.html?param=redirect</form-login-page>
<form-error-page>/loginAuth.html?param=failed</form-error-page>
</form-login-config>
</login-config>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-scm-plugin</artifactId>
<version>1.8.1</version>
<configuration>
<connectionType>developerConnection</connectionType>
</configuration>
</plugin>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<phase>install</phase>
<configuration>
<tasks>
<ant target="deploy" />
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
<version>0.1.50</version>
</dependency>
<dependency>
<groupId>org.apache.ant</groupId>
<artifactId>ant-jsch</artifactId>
<version>1.9.2</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
</project>
我检查以确保插件依赖于 jetty-util.jar 并且它确实如此处所示
可能是问题的一部分:为了实现一个新的LoginService
接口类,我扩展了MappedLoginService
已经实现的类LoginService
(它在 Jetty jars 中)并且我覆盖了它的一些方法。这会导致问题吗?