I have an issue in STS, where it is displaying an error in my context.xml file when referencing the jpa:repositories node. It does not prevent the app from running (actually seems to be working well), but I cannot get the error to go away.
Error:
Error occured processing XML 'Class
org/springframework/data/repository/config/RepositoryComponentProvider illegally
accessing "package private" member of class org/springframework/context/
annotation/AnnotationConfigUtils'. See Error Log for more details
Segment of XML with problem:
<?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:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:jdbc="http://www.springframework.org/schema/jdbc"
xmlns:jpa="http://www.springframework.org/schema/data/jpa"
xsi:schemaLocation="http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<tx:annotation-driven transaction-manager="transactionManagerSpecial" />
<jpa:repositories base-package="com.testcompany.**.repository" transaction-manager-ref="transactionManagerSpecial"></jpa:repositories>
Spring version (core/tx/beans/test/aop/context/expression): 4.0.2.RELEASE
Spring Data JPA version: 1.5.0.RELEASE
Hibernate version (not sure why this would matter): 4.2.1.Final
POM:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>com.test.spring</groupId>
<artifactId>test-spring-transactional</artifactId>
<version>1.0.1</version>
<packaging>jar</packaging>
<name>Spring Transactional Test Project</name>
<url>http://www.imatestapp.com</url>
<description>This project is a minimal jar utility with Spring configuration for Hibernate set up.</description>
<properties>
<maven.test.failure.ignore>true</maven.test.failure.ignore>
<spring.framework.version>4.0.2.RELEASE</spring.framework.version>
<hibernate.version>4.2.1.Final</hibernate.version>
<spring.framework.data.version>1.5.0.RELEASE</spring.framework.data.version>
</properties>
<dependencies>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>${hibernate.version}</version>
</dependency>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>1.0.0.GA</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.framework.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.framework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${spring.framework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${spring.framework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.framework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jpa</artifactId>
<version>${spring.framework.data.version}</version>
</dependency>
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.2.2</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.5.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
Dependency Tree (updated to Spring Data 1.5.2, still same issue):
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ test-spring-transactional ---
[INFO] com.test.spring.template:test-spring-transactional:jar:1.0.1
[INFO] +- org.hibernate:hibernate-entitymanager:jar:4.3.5.Final:compile
[INFO] | +- org.jboss.logging:jboss-logging:jar:3.1.3.GA:compile
[INFO] | +- org.jboss.logging:jboss-logging-annotations:jar:1.2.0.Beta1:compile
[INFO] | +- org.hibernate:hibernate-core:jar:4.3.5.Final:compile
[INFO] | | +- antlr:antlr:jar:2.7.7:compile
[INFO] | | \- org.jboss:jandex:jar:1.1.0.Final:compile
[INFO] | +- dom4j:dom4j:jar:1.6.1:compile
[INFO] | | \- xml-apis:xml-apis:jar:1.0.b2:compile
[INFO] | +- org.hibernate.common:hibernate-commons-annotations:jar:4.0.4.Final:compile
[INFO] | +- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:jar:1.0.0.Final:compile
[INFO] | +- org.jboss.spec.javax.transaction:jboss-transaction-api_1.2_spec:jar:1.0.0.Final:compile
[INFO] | \- org.javassist:javassist:jar:3.18.1-GA:compile
[INFO] +- javax.validation:validation-api:jar:1.0.0.GA:compile
[INFO] +- org.springframework:spring-test:jar:4.0.2.RELEASE:test
[INFO] | \- org.springframework:spring-core:jar:4.0.2.RELEASE:compile
[INFO] | \- commons-logging:commons-logging:jar:1.1.3:compile
[INFO] +- org.springframework:spring-context-support:jar:4.0.2.RELEASE:compile
[INFO] | \- org.springframework:spring-beans:jar:4.0.2.RELEASE:compile
[INFO] +- org.springframework:spring-aop:jar:4.0.2.RELEASE:compile
[INFO] | \- aopalliance:aopalliance:jar:1.0:compile
[INFO] +- org.springframework:spring-orm:jar:4.0.2.RELEASE:compile
[INFO] | +- org.springframework:spring-jdbc:jar:4.0.2.RELEASE:compile
[INFO] | \- org.springframework:spring-tx:jar:4.0.2.RELEASE:compile
[INFO] +- org.springframework:spring-context:jar:4.0.2.RELEASE:compile
[INFO] | \- org.springframework:spring-expression:jar:4.0.2.RELEASE:compile
[INFO] +- org.springframework.data:spring-data-jpa:jar:1.5.2.RELEASE:compile
[INFO] | +- org.springframework.data:spring-data-commons:jar:1.7.2.RELEASE:compile
[INFO] | +- org.aspectj:aspectjrt:jar:1.7.4:compile
[INFO] | +- org.slf4j:slf4j-api:jar:1.7.6:compile
[INFO] | \- org.slf4j:jcl-over-slf4j:jar:1.7.6:runtime
[INFO] +- commons-dbcp:commons-dbcp:jar:1.2.2:compile
[INFO] | \- commons-pool:commons-pool:jar:1.3:compile
[INFO] \- log4j:log4j:jar:1.2.16:compile
**Update based upon responses below to update to Spring Data JPA 1.5.2**
Updating to JPA 1.5.2 "may" have resolved the above issue (as the XML is no longer complaining about referencing a private method), but still has reference issues. Now my repository cannot find the "PagingAndSorting" repository that is referenced by JpaRepository (although it can find JpaRepository itself):
package com.fedins.template.repository;
import org.springframework.data.jpa.repository.JpaRepository;
import com.fedins.template.model.Account;
public interface AccountRespository extends JpaRepository<Account, String> {
}
2 errors in this interface:
(base class error)
The type org.springframework.data.domain.Sort cannot be resolved. It is indirectly referenced from required .class files
(error on JpaRepository declaration)
The type org.springframework.data.repository.PagingAndSortingRepository cannot be resolved. It is indirectly referenced from required .class files
**Final Update**
The issue above was a problem with the local Maven repository. After resolving that, I ended up with a clean project... Except for a final error on the jpa:repositories element:
AnnotationConfigUtils.processCommonDefinitionAnnotations(…) is not public! Make sure you're using Spring 3.2.5 or better. The class was loaded from file:/C:/Program Files/STS/3.4/plugins/org.springframework.context_4.0.0.20130829-M3.jar.:org.springframework.context.annotation.AnnotationConfigUtils.processCommonDefinitionAnnotations(org.springframework.beans.factory.annotation.AnnotatedBeanDefinition)
After some searching, I found this may be an issue with STS 3.4: https://jira.spring.io/i#browse/DATAJPA-490
I will be upgrading to STS 3.5 to see if it solves the issue.