javax.jdo.JDOFAtalUserException

261 阅读1分钟

javax.jdo.JDOFatalUserException: Class org.datanucleus.api.jdo.JDOPersistenceManagerFactory was not found

最近同事在跑hive数据迁移任务的时候遇到了如题报错,问我有没有解决思路。 同事说他加完如下依赖后,又出现了新的问题

<dependency>
    <groupId>org.datanucleus</groupId>
    <artifactId>datanucleus-api-jdo</artifactId>
    <version>3.2.6</version>
</dependency>
<dependency>
    <groupId>org.datanucleus</groupId>
    <artifactId>datanucleus-core</artifactId>
    <version>3.2.10</version>
</dependency>
<dependency>
    <groupId>org.datanucleus</groupId>
    <artifactId>datanucleus-rdbms</artifactId>
    <version>3.2.9</version>
</dependency>
Description:
An attempt was made to call a method that does not exist. The attempt was made from the following location:
    org.datanucleus.api.jdo.JDOPersistenceManagerFactory.<clinit>(JDOPersistenceManagerFacory.java:108)
The following method did not exist:
    org.datanucleus.util.Localiser.getInstance(Ljava/lang/String;Ljava/lang/ClassLoader;)Lorg/datanucleus/util/Localiser;
The calling method's class, org.datanucleus.api.jdo.JDOPersistenceManagerFactoer, was loaded  from the following location:
    jar:file:/***/***.jar!/BOOT-INF/lib/datanucleus-api-jdo-3.2.6.jar!/org/datanucleus/api/jdo/JDOPersistenceManagerfactory.class
The called method's class, org.datanucleus.util.Localiser, is available from the following locations:
    jar:file:/opt/cloudera/parcels/CDH/lib/spark/jars/datanucleus-core-4.1.6.jar!/org/datanucleus/util/Localiser.class
    jar:file:/***/**.jar!/BOOT_INF/lib/datanucleus-core-3.2.10.jar!/org/datanucleus/util/Localiser.class

由报错可知,edge node上已经有了包datanucleus-core-4.1.6.jar,于是让同事将pom中的datanucleus-core删掉,然后将datanucleus-rdbms和datanucleus-api-jdo版本都改为4.1.6. 问题解决。