11

私のSpring WebAppをjetty-mavenプラグインで動作させることができないようです

私はいつも得る

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'loadTimeWeaver': Initialization of bean failed; nested exception is java.lang.IllegalStateException: ClassLoader [org.eclipse.jetty.webapp.WebAppClassLoader] does NOT provide an 'addTransformer(ClassFileTransformer)' method. Specify a custom LoadTimeWeaver or start your Java virtual machine with Spring's agent: -javaagent:org.springframework.instrument.jar

私は持っていますが:

  • MAVEN_OPTS を javaagent:/Users/blabla/.m2/repository/org/springframework/spring-instrument/3.1.3.RELEASE/spring-instrument-3.1.3.RELEASE.jar に設定します
  • JAVA_OPTIONS を同じものに設定します
  • spring-instrumentspring-aspectsに dep を追加
  • jetty-maven-plugin 構成jvmArgsに 追加-javaagent:....
4

6 に答える 6

1

おそらく、いくつかの瓶が欠けていますaspectjweaver aspectjrt spring-instrument

loadTimeWeaverさらに、applicationcontext.xml ファイルで Bean を明示的に定義してみてください。

    <property name="loadTimeWeaver">
        <bean id="instrumentationLoadTimeWeaver" class="org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver"/>
    </property>
于 2012-12-11T07:54:36.420 に答える
1

(mvn jetty:run を使用して) Maven から Jetty を起動すると、Jetty は maven と同じ JVM で実行されるため、MAVEN_OPTS を使用して任意のオプションを渡す必要があります。

(あなたのスニペットでは見られなかったので、javaagent の前に必ずマイナス記号を含めてください)。

export MAVEN_OPTS=-javaagent:org.springframework.instrument-3.0.5.RELEASE.jar

Maven を使用した桟橋での読み込み時間の織り込みの完全な例は、Github で見つけることができます。

https://github.com/zzantozz/testbed/tree/master/spring-aspectj-load-time-weaving-in-jetty

于 2013-03-20T21:19:26.660 に答える
0

pom.xml ファイルの詳細がなければ... 簡単ではありません。しかし、jetty プラグインの一般的な問題の 1 つは依存関係です。

私にとって常に有効なルールの 1 つは、戦争のすべての依存関係を、maven-jetty-plugin の直接の依存関係として提供されるスコープに配置することです。

spring-instrument と spring-aspects も maven-jetty-plugin の直接の依存関係として配置することをお勧めします。

私の理解によると:

MAVEN_OPTS を javaagent:/Users/blabla/.m2/repository/org/springframework/spring-instrument/3.1.3.RELEASE/spring-instrument-3.1.3.RELEASE.jar に設定します

jvm引数をjetty JVMに渡す正しい方法です(jettyはmavenと同じJVMで実行されるため)

于 2013-03-14T16:38:19.473 に答える
0

ddewaeleの例に従って、ようやく機能しました。だから、することとは別に

  • MAVEN_OPTS を javaagent:/Users/blabla/.m2/repository/org/springframework/spring-instrument/3.1.3.RELEASE/spring-instrument-3.1.3.RELEASE.jar に設定します

追加した依存関係を確認する必要があります。spring-tx がありませんでした。次の依存関係が必要です。

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>3.0.5.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-aspects</artifactId>
    <version>3.0.5.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.aspectj</groupId>
    <artifactId>aspectjweaver</artifactId>
    <version>1.6.10</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>3.0.5.RELEASE</version>
</dependency>
<!-- Following dependencies are required because of spring-aspects -->
<dependency>
    <groupId>org.hibernate.javax.persistence</groupId>
    <artifactId>hibernate-jpa-2.0-api</artifactId>
    <version>1.0.0.Final</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-tx</artifactId>
    <version>3.0.5.RELEASE</version>
</dependency>

そうしないと、直感的でないエラーが発生します

カスタム LoadTimeWeaver を指定するか、Spring のエージェントで Java 仮想マシンを起動します: -javaagent:org.springframework.instrument.jar

注: 必要な春のバージョンを使用できます。すべてに 3.2.5 を使用しています。

于 2014-11-18T09:53:38.550 に答える