утечка ресурса java -eclipse-ресурса: 'appContext' никогда не закрывается

1

Я создаю небольшой компонент bean-класса в Eclipse. Он работает в NetBeans, но в Eclipse он говорит

Утечка ресурсов: "appContext" никогда не закрывается.

Я закрыл его, как это appContext.close(); Но это не работает.

//class drawingapplication

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class drawingapplication {

    public static void main(String[] args) {
        ApplicationContext appContext = new ClassPathXmlApplicationContext("spring.xml");
        Triangle triangle =(Triangle) appContext.getBean("triangle");
        triangle.draw();    
    }
}

//class Triangle

package org.spring.javabeans;

public class Triangle {
    public void draw(){
        System.out.println("triangle drawan");
    }
}

//spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN""http://www.springframework.org/dtd/spring-beans-2.0.dtd">

<beans>
    <bean id="triangle" class="org.spring.javabeans.Triangle"/>
</beans>
  • 1
    Что значит не работает ? Что вы ожидаете случиться? Что на самом деле происходит?
Теги:
spring
applicationcontext

2 ответа

1

ClassPaспасибоmlApplicationContext является подклассом ConfigurableApplicationContext что означает, что он реализует Closable.

ApplicationContext не распространяется на Closeable, поэтому метод Closable#close() не может быть вызван по какой-либо ссылке типа ApplicationContext.

Однако Eclipse обнаруживает, что вы назначаете значение типа ClassPaспасибоmlApplicationContext (которое должно быть закрыто) и предупреждает, что вы должны закрыть его, даже если вы не можете использовать ссылочный тип переменной, которую вы назначаете.

Вам нужно либо присвоить ссылочное значение, либо присвоить его переменной типа, реализующего Closeable.

ClassPathXmlApplicationContext appContext = new ClassPathXmlApplicationContext("spring.xml");

Затем вы можете вызвать close() обычно

appContext.close();
  • 0
    теперь это дает NullPointerException, мне действительно нравится ClassPathXmlApplicationContext appContext = new ClassPathXmlApplicationContext ("spring.xml"); Треугольник треугольник = (Треугольник) appContext.getBean ("треугольник"); triangle.draw (); appContext.close ();
  • 0
    @heshan Эта ошибка кажется совершенно не связанной с вопросом и ответом. Вы можете добавить любые вопросы в качестве редактирования вашего вопроса. Если все детали доступны, возможно, тогда я смогу вам помочь.
0
package org.spring.javabeans ;

import  org.springframework.context.support.ClassPathXmlApplicationContext;

public class DrawingApplication {


public static void main(String[] args) {
    ClassPathXmlApplicationContext appContext= new ClassPathXmlApplicationContext("Spring.xml");
    Triangle triangle= (Triangle) appContext.getBean("triangle");
    appContext.close();
    triangle.draw();



}

}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню