4

主にaspecjの側面と他のいくつかのSpring Managed Beanを含み、すべてのSpring依存関係がjar内にバンドルされ、weblogicクラスパスに追加されたmaven-assemblyプラグインを含むjarにバンドルされたスタンドアロンのSpringアプリがあります。

目標は、aspectJ エージェントを使用して、実行時に weblogic 内で実行中のすべてのアプリケーションにライブラリ内のアスペクトを織り込むことです。

問題は、jar ファイルをクラスパスに追加してサーバーを再起動すると、既存の Web アプリがデプロイされているときに ClassNotFoundException が発生することです。

クラスパスにjarファイルがなくてもアプリが正常にデプロイされるため、libフォルダーにないjarファイルではないことはわかっています。

注: spring jar ファイルを domain/lib フォルダーにドロップすると、classNotFoundException も発生します。

実行中のアプリケーションが私のスプリング ベースのライブラリの影響を受ける理由を説明できますか?

以下のスタック トレースを参照してください。カスタムjarファイルをweblogicクラスパスに追加したときにのみこの例外が発生するためです。

Caused By: org.springframework.beans.factory.CannotLoadBeanClassException: Error loading class [org.springframework.validation.beanvalidation.LocalValidatorFactoryBean] for bean with name 'jsr303Validator' defined in ServletContext resource [/WEB-INF/config/webmvc-config.xml]: problem with class file or dependent class; nested exception is java.lang.NoClassDefFoundError: javax/validation/ValidatorFactory
at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1272)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.predictBeanType(AbstractAutowireCapableBeanFactory.java:578)
at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:1338)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doGetBeanNamesForType(DefaultListableBeanFactory.java:356)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanNamesForType(DefaultListableBeanFactory.java:335)
at org.springframework.beans.factory.BeanFactoryUtils.beanNamesForTypeIncludingAncestors(BeanFactoryUtils.java:187)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:895)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:853)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:768)
at org.s

Caused By: java.lang.ClassNotFoundException: javax.validation.ValidatorFactory
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java

これが私のWARファイルの依存関係ツリーです。

       [INFO] [dependency:tree {execution: default-cli}]
    [INFO] com.company.project:eCom4jWeb:war:1.0.0-SNAPSHOT
    [INFO] +- com.company.project:eCom4jCore:jar:1.0.0-SNAPSHOT:compile
    [INFO] |  +- org.springframework:spring-jdbc:jar:3.1.2.RELEASE:compile
    [INFO] |  +- org.hsqldb:com.springsource.org.hsqldb:jar:1.8.0.9:runtime
    [INFO] |  +- mysql:mysql-connector-java:jar:5.1.9:compile
    [INFO] |  +- org.hibernate:com.springsource.org.hibernate:jar:3.3.2.GA:compile
    [INFO] |  |  +- net.sourceforge.cglib:com.springsource.net.sf.cglib:jar:2.2.0:compile
[INFO] |  |  +- org.antlr:com.springsource.antlr:jar:2.7.6:compile
[INFO] |  |  +- org.apache.commons:com.springsource.org.apache.commons.collections:jar:3.2.1:compile
[INFO] |  |  +- org.dom4j:com.springsource.org.dom4j:jar:1.6.1:compile
[INFO] |  |  +- org.jboss.javassist:com.springsource.javassist:jar:3.9.0.GA:compile
[INFO] |  |  \- org.objectweb.asm:com.springsource.org.objectweb.asm:jar:1.5.3:compile
[INFO] |  +- org.hibernate:com.springsource.org.hibernate.annotations:jar:3.4.0.GA:compile
[INFO] |  |  \- org.hibernate:com.springsource.org.hibernate.annotations.common:jar:3.3.0.ga:compile
[INFO] |  +- org.hibernate:hibernate-validator:jar:4.2.0.Final:compile
[INFO] |  |  +- javax.validation:validation-api:jar:1.0.0.GA:compile
[INFO] |  |  \- org.slf4j:slf4j-api:jar:1.6.1:compile
[INFO] |  +- javax.transaction:com.springsource.javax.transaction:jar:1.1.0:compile
[INFO] |  +- commons-beanutils:commons-beanutils:jar:1.8.3:compile
[INFO] |  +- net.sf.dozer:dozer:jar:5.3.1:compile
[INFO] |  \- org.apache.xmlbeans:xmlbeans:jar:2.4.0:runtime
[INFO] |     \- stax:stax-api:jar:1.0.1:runtime
[INFO] +- com.company.project:eCom4jWS:jar:1.0.0-SNAPSHOT:compile
[INFO] |  +- com.company.project:eCom4jRemixDomain:jar:1.0.0-SNAPSHOT:compile
[INFO] |  |  \- org.jvnet.jaxb2_commons:jaxb2-basics-runtime:jar:0.6.2:compile
[INFO] |  \- org.springframework:spring-oxm:jar:3.1.2.RELEASE:compile
[INFO] +- javax.servlet:jstl:jar:1.2:compile
[INFO] +- org.springframework.security:spring-security-web:jar:3.1.2.RELEASE:compile
[INFO] |  \- aopalliance:aopalliance:jar:1.0:compile
[INFO] +- org.springframework.security:spring-security-taglibs:jar:3.1.2.RELEASE:compile
[INFO] |  \- org.springframework.security:spring-security-acl:jar:3.1.2.RELEASE:compile
[INFO] +- org.springframework:spring-webmvc:jar:3.1.2.RELEASE:compile
[INFO] |  +- org.springframework:spring-asm:jar:3.1.2.RELEASE:compile
[INFO] |  \- org.springframework:spring-context-support:jar:3.1.2.RELEASE:compile
[INFO] +- javax.servlet:servlet-api:jar:2.5:provided
[INFO] +- org.springframework:spring-beans:jar:3.1.2.RELEASE:compile
[INFO] +- org.springframework.webflow:spring-binding:jar:2.2.1.RELEASE:compile
[INFO] +- org.springframework.webflow:spring-js:jar:2.2.1.RELEASE:compile
[INFO] |  \- org.springframework.webflow:spring-js-resources:jar:2.2.1.RELEASE:compile
[INFO] +- org.springframework.webflow:spring-webflow:jar:2.2.1.RELEASE:compile
[INFO] +- org.springframework.security:spring-security-config:jar:3.1.2.RELEASE:compile
[INFO] +- org.springframework.security:spring-security-core:jar:3.1.2.RELEASE:compile
[INFO] +- org.springframework:spring-tx:jar:3.1.2.RELEASE:compile
[INFO] +- org.springframework:spring-web:jar:3.1.2.RELEASE:compile
[INFO] +- org.springframework:spring-aop:jar:3.1.2.RELEASE:compile
[INFO] +- commons-logging:commons-logging:jar:1.1.1:compile
[INFO] +- org.springframework:spring-core:jar:3.1.2.RELEASE:compile
[INFO] +- org.springframework:spring-orm:jar:3.1.2.RELEASE:compile
[INFO] +- org.springframework:spring-context:jar:3.1.2.RELEASE:compile
[INFO] +- javax.el:el-api:jar:1.0:provided
[INFO] +- org.jboss.el:com.springsource.org.jboss.el:jar:2.0.0.GA:compile
[INFO] +- org.apache.tiles:tiles-core:jar:2.1.4:compile
[INFO] |  +- commons-digester:commons-digester:jar:1.8.1:compile
[INFO] |  \- commons-logging:commons-logging-api:jar:1.1:compile
[INFO] +- org.apache.tiles:tiles-jsp:jar:2.1.4:compile
[INFO] +- org.apache.tiles:tiles-api:jar:2.1.4:compile
[INFO] +- org.apache.tiles:tiles-servlet:jar:2.1.4:compile
[INFO] +- org.springframework:spring-test:jar:3.1.2.RELEASE:test
[INFO] +- org.springframework:spring-expression:jar:3.1.2.RELEASE:compile
[INFO] +- org.springframework:spring-test-mvc:jar:1.0.0.BUILD-SNAPSHOT:test
[INFO] +- org.powermock:powermock-module-junit4:jar:1.4.12:test
[INFO] |  \- org.powermock:powermock-module-junit4-common:jar:1.4.12:test
[INFO] |     +- org.powermock:powermock-core:jar:1.4.12:test
[INFO] |     |  \- org.javassist:javassist:jar:3.16.1-GA:test
[INFO] |     \- org.powermock:powermock-reflect:jar:1.4.12:test
[INFO] +- org.powermock:powermock-api-easymock:jar:1.4.12:test
[INFO] |  \- org.powermock:powermock-api-support:jar:1.4.12:test
[INFO] +- org.codehaus.jackson:jackson-mapper-asl:jar:1.5.3:compile
[INFO] |  \- org.codehaus.jackson:jackson-core-asl:jar:1.5.3:compile
[INFO] +- com.jayway.jsonpath:json-path:jar:0.8.1:test
[INFO] |  \- net.minidev:json-smart:jar:1.1.1:test
[INFO] +- org.aspectj:com.springsource.org.aspectj.weaver:jar:1.6.8.RELEASE:compile
[INFO] +- org.slf4j:com.springsource.slf4j.api:jar:1.5.6:compile
[INFO] +- org.slf4j:com.springsource.slf4j.org.apache.commons.logging:jar:1.5.6:runtime
[INFO] +- org.slf4j:com.springsource.slf4j.log4j:jar:1.5.6:runtime
[INFO] +- org.apache.log4j:com.springsource.org.apache.log4j:jar:1.2.15:compile
[INFO] +- org.apache.commons:com.springsource.org.apache.commons.dbcp:jar:1.2.2.osgi:runtime
[INFO] +- org.apache.commons:com.springsource.org.apache.commons.pool:jar:1.5.3:runtime
[INFO] +- org.hamcrest:hamcrest-all:jar:1.3:compile
[INFO] +- junit:junit:jar:4.8.1:test (scope not updated to compile)
[INFO] +- org.easymock:easymock:jar:3.1:test
[INFO] |  +- cglib:cglib-nodep:jar:2.2.2:test
[INFO] |  \- org.objenesis:objenesis:jar:1.2:test
[INFO] +- commons-lang:commons-lang:jar:2.6:compile
[INFO] +- org.apache.struts:struts2-core:jar:2.2.1:compile
[INFO] |  +- org.apache.struts.xwork:xwork-core:jar:2.2.1:compile
[INFO] |  +- org.freemarker:freemarker:jar:2.3.16:compile
[INFO] |  +- ognl:ognl:jar:3.0:compile
[INFO] |  +- commons-fileupload:commons-fileupload:jar:1.2.1:compile
[INFO] |  +- commons-io:commons-io:jar:1.3.2:compile
[INFO] |  \- com.sun:tools:jar:1.5.0:system
[INFO] +- org.apache.struts:struts2-tiles-plugin:jar:2.2.1:compile
[INFO] +- org.apache.struts:struts2-spring-plugin:jar:2.2.1:compile
[INFO] +- javax.mail:mail:jar:1.4:compile
[INFO] |  \- javax.activation:activation:jar:1.1:compile
[INFO] \- net.tanesha.recaptcha4j:recaptcha4j:jar:0.0.7:compile
[INFO] -------

ありがとう

4

3 に答える 3

0

Maven を使用して jar をビルドしている場合は、依存関係が埋め込まれた jar ファイルをビルドしてテストしてみてください。以下のリンクが役立ちます。

Maven を使用して依存関係を持つ実行可能な JAR を作成するにはどうすればよいですか?

于 2013-06-01T11:38:45.843 に答える
0

Jar Hell のように聞こえます...同じ jar の異なるバージョンがある場合、コンテナは最初の 1 つだけをロードします...次に、jar 1 のバージョン 5 と、依存する jar 2 のバージョン 2 をロードする場合を想像してください (しかし、正しいのはバージョン 5 でもありました)...そして、システムで大きなクラッシュが発生する可能性があります...それを防ぐために、一部のコンテナーはバージョンをロードせず、ClassNotFoundException などのメッセージを表示します。

于 2013-11-02T04:31:31.750 に答える