私はJetty 9.0.4v20130625を使用しており、maven-jetty-plugin
. LoginService
レルムにログインしているユーザーを処理する独自のクラスを実装しました。行の 1 つでクラスを使用しようとしましたorg.eclipse.jetty.util.security.Credential
が、実行中にその行に a がスローNoClassDefFoundError
されます。
私のtarget
ディレクトリには、Jetty インスタンスにデプロイされているすべてのものが含まれています。その中には、プラグインに既に含まれている必要があるため、WEB-INF/lib
フォルダーには期待どおりが含まれていないjetty-util-9.0.4.v20130625.jar
ため、競合するjarを除外すると思います。では、jetty インスタンスがこの jar を見つけられない原因は何でしょうか?
私は日食を使用していますが、コードにエラーは表示されません。これを Maven プロジェクトとして設定すると、Maven が依存関係を処理します。デプロイ時に Jetty によって提供される必要があるため、Jetty jar をパッケージ化しないように設定しました。ここに私の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 jar 内) を拡張し、そのメソッドの一部をオーバーライドしています。それが問題を引き起こしている可能性はありますか?