0

このコードを実行していますが、springconfig4.xmlファイルが見つかりません。

package com.nortal.pirs.test.independant;

import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Test4 {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("/com/nortal/pirs/beans/springconfig4.xml");
        BeanFactory factory = context;
        Test3 instance = (Test3) factory.getBean("Test3");

        instance.run();
    }
}

つまり、Javaでは、現在のパッケージにないパスを使用しようとすると機能しないため、機能しないことを期待していました。しかし、私が見た多くのSpringチュートリアルと同様に、それらはすべて、構成ファイルを指定するこの方法を示しています。

これで、springconfig4.xmlがアプリケーションのsrc / com / nortal / pirs/beansフォルダーにあります。では、ここで見つけられるように指定するにはどうすればよいですか?

現在のTest4クラスは、src / com / nortal / pirs / test/independantフォルダーにあります。

私のスタックトレース:

    2012-12-09 06:16:15,734 [main] INFO  org.springframework.context.support.AbstractApplicationContext - Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@b24044e: startup date [Sun Dec 09 06:16:15 EET 2012]; root of context hierarchy
Exception in thread "main" java.lang.NoClassDefFoundError: org/springframework/asm/ClassVisitor
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.<init>(AbstractAutowireCapableBeanFactory.java:121)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.<init>(AbstractAutowireCapableBeanFactory.java:168)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.<init>(DefaultListableBeanFactory.java:167)
    at org.springframework.context.support.AbstractRefreshableApplicationContext.createBeanFactory(AbstractRefreshableApplicationContext.java:195)
    at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:128)
    at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:527)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:441)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
    at com.nortal.pirs.test.independant.Test4.main(Test4.java:9)
Caused by: java.lang.ClassNotFoundException: org.springframework.asm.ClassVisitor
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 10 more

私のspringconfig4.xml:

  <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd">

  <context:component-scan base-package="com.nortal.pirs.businesslogic.logic"></context:component-scan>
  <context:component-scan base-package="com.nortal.pirs.test.independant"></context:component-scan>

</beans>

それとも、問題はどこか別の場所にあるのでしょうか?

4

6 に答える 6

2

例外は、Springコンテキストxmlではなくクラスが見つからないことを示しています

Caused by: java.lang.ClassNotFoundException: org.springframework.asm.ClassVisitor

asm依存関係を追加してください

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>org.springframework.asm</artifactId>
    <version>3.1.0.RELEASE</version>
</dependency>
于 2012-12-09T04:24:54.647 に答える
2

あなたのスタックトレースはこれを指します:

java.lang.ClassNotFoundException: org.springframework.asm.ClassVisitor

Spring-asm-3.1.2.RELEASE.jarファイルをMavenリポジトリからダウンロードする必要があります(Spring 3.1.2を使用している場合)。または、Mavenを使用している場合は、ファイルを編集pom.xmlして次の行を追加します。

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-asm</artifactId>
    <version>3.1.2.RELEASE</version>
</dependency>

また、この行:

ApplicationContext context = new ClassPathXmlApplicationContext("/com/nortal/pirs/beans/springconfig4.xml");

エラーが発生しました。パスは末尾の/。で開始してはならないため、ファイルへのパスは次のようになります"com/nortal/pirs/beans/springconfig4.xml"

ClassPathResource javadocは、とにかく削除されると述べています。

ClassLoaderで使用するための新しいClassPathResourceを作成します。ClassLoaderリソースアクセスメソッドはスラッシュを受け入れないため、先頭のスラッシュは削除されます。

于 2012-12-09T04:44:55.427 に答える
2

追加spring-asm-3.0.1.RELEASE.jarしてspring-expression-3.0.1.RELEASE.jar

于 2015-04-30T06:41:18.523 に答える
1

java.lang.ClassNotFoundException:org.springframework.asm.ClassVisitor

spring-asm-3.1.2.RELEASE.jarファイルを追加するだけです。libフォルダーに配置します。

于 2016-08-01T14:34:58.763 に答える
0

上記の上記の問題の場合、これらのjarが欠落しています。つまり、1.org.springframework.asm-3.0.1.RELEASE-A.jar2.org.springframework.expression-3.0.1.RELEASE-A.jarまたはすべてを追加します。新しいプログラマーがすべての基本レベルのプログラムを実行できるように、SpringのコアJars 。

プログラムに以下の行は必要ありません。上記のプログラムでは、ファクトリのコンテキスト使用できます。

BeanFactoryファクトリ=コンテキスト

通常、 BeanFactoryの代わりにApplicationContextを使用します。BeanFactoryを使用しても、プログラムへの影響はありません。

于 2017-02-23T10:47:52.393 に答える
0

画面に表示されている瓶を短く追加すると、機能しますここに画像の説明を入力してください

于 2017-07-30T10:43:57.087 に答える