2014-01-10 3 views
0

У меня есть файл Test.java с содержимым, как показано ниже:Проблема с спецификатора доступа класса

class MyClass{ 
    private String myMember; 

    public String getMyMember(){ return this.myMember;} 
    public void setMyMember(final String myMember){this.myMember = myMember;} 
} 

public class Test implements Tasklet{ 
     public RepeatStatus execute(final StepContribution contribution, final ChunkContext chunkContext) throws Exception { 

    // getting error here 

    List<MyClass> myClassList= this.myJdbcTemplate.query(myQuery, 
     ParameterizedBeanPropertyRowMapper.newInstance(MyClass.class)); 

    return RepeatStatus.FINISHED; 
    } 

} 

тасклет пружина пакетного интерфейса.

Я получаю сообщение об ошибке, как показано ниже:

org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.mypackage.MyClass]: Is the constructor accessible?; nested exception is java.lang.IllegalAccessException 

Что является причиной ошибки?

Как это решить?

Спасибо за чтение!

ответ

3

MyClass должен быть public и необязательно должны подвергать конструктор по умолчанию:

public class MyClass() { 
    public MyClass() { 

    } 
} 

Вы ожидали ParameterizedBeanPropertyRowMapper, чтобы возвращать List<MyClass> в то время как MyClass является пакет частных.

Spring ParameterizedBeanPropertyRowMapper не будет знать о существовании MyClass, если MyClass не является общедоступным.

+0

Не будет ли класс приватным и доступным из любого места в пакете? – Nik

+0

Когда ommiting 'public', он будет закрытым пакетом, да. –

+0

@ Vicky Spring не входит в ваш пакет. Класс из 'Spring' пытается вызвать конструктор. –

Смежные вопросы