DataNucleus、HBase、JDO:“;必须指定名为javax.jdo.PersistenceManagerFactoryClass的属性;
我在尝试执行以下操作时遇到异常(“必须指定名为javax.jdo.PersistenceManagerFactoryClass的属性”) 我的datanucleus.properties文件(下面)没有指定这样的属性,但是教程和 查找3.1示例后编辑: src/main/resources/datanucleus.propertiesDataNucleus、HBase、JDO:“;必须指定名为javax.jdo.PersistenceManagerFactoryClass的属性;,java,hbase,jdo,datanucleus,Java,Hbase,Jdo,Datanucleus,我在尝试执行以下操作时遇到异常(“必须指定名为javax.jdo.PersistenceManagerFactoryClass的属性”) 我的datanucleus.properties文件(下面)没有指定这样的属性,但是教程和 查找3.1示例后编辑: src/main/resources/datanucleus.properties javax.jdo.option.ConnectionURL=hbase:hx1:60010 javax.jdo.option.Mapping=hbase da
javax.jdo.option.ConnectionURL=hbase:hx1:60010
javax.jdo.option.Mapping=hbase
datanucleus.metadata.validate=false
datanucleus.autoCreateSchema=true
datanucleus.validateTables=false
datanucleus.validateConstraints=false
src/main/java/hbase site.xml
<?xml version="1.0"?>
<configuration>
<property>
<name>hbase.zookeeper.quorum</name>
<value>hx1:2181</value>
<description>The host and port that the HBase master runs at.
</description>
</property>
</configuration>
<?xml version="1.0"?>
<!DOCTYPE orm PUBLIC
"-//Sun Microsystems, Inc.//DTD Java Data Objects Metadata 2.0//EN"
"http://java.sun.com/dtd/orm_2_0.dtd">
<orm>
<package name="com.business.model">
<class name="Recommendation" table="Recommendations">
<field name="id" column="ID"/>
<field name="documents" column="DOCUMENTS"/>
</class>
<class name="Document">
<field name="id" column="ID"/>
<field name="title" column="TITLE"/>
</class>
</package>
</orm>
hbase.zookeeper.quorum
hx1:2181
HBase主机运行的主机和端口。
src/main/com.business.model/package hbase.xml
<?xml version="1.0"?>
<configuration>
<property>
<name>hbase.zookeeper.quorum</name>
<value>hx1:2181</value>
<description>The host and port that the HBase master runs at.
</description>
</property>
</configuration>
<?xml version="1.0"?>
<!DOCTYPE orm PUBLIC
"-//Sun Microsystems, Inc.//DTD Java Data Objects Metadata 2.0//EN"
"http://java.sun.com/dtd/orm_2_0.dtd">
<orm>
<package name="com.business.model">
<class name="Recommendation" table="Recommendations">
<field name="id" column="ID"/>
<field name="documents" column="DOCUMENTS"/>
</class>
<class name="Document">
<field name="id" column="ID"/>
<field name="title" column="TITLE"/>
</class>
</package>
</orm>
你知道我错过了什么吗?在与JPA合作几年后,我是JDO新手。我从未尝试过HBase教程,但您必须定义javax.JDO.PersistenceManagerFactoryClass属性。Mine在persistence.xml文件(src/main/resources)中定义。属性定义:
<property name="javax.jdo.PersistenceManagerFactoryClass"
value="org.datanucleus.api.jdo.JDOPersistenceManagerFactory" />
也可以在创建PMF时定义此属性
更多详细信息请参见:我从未尝试过HBase教程,但必须定义javax.jdo.PersistenceManagerFactoryClass属性。Mine在persistence.xml文件(src/main/resources)中定义。属性定义:
<property name="javax.jdo.PersistenceManagerFactoryClass"
value="org.datanucleus.api.jdo.JDOPersistenceManagerFactory" />
也可以在创建PMF时定义此属性
更多详细信息见:您参考的是不推荐使用的示例的v3.0和本教程的v3.1。我会解决这个问题。我复制了3.1示例,但仍然得到相同的错误。有什么想法吗?当我下载3.1示例时,取消对“pom.xml”和“datanucleus.properties”中的HBase位的注释,并按照教程运行,效果很好(由于其依赖性问题,您可能需要将hadoop core、HBase和zookeeper的版本更新到更新的版本)。当类路径中有多个jdo实现时(并且通过教程自述文件运行只会引入DataNucleus),只需要“javax.jdo.PersistenceManagerFactoryClass”,否则,它会从datanucleus-api-jdo.jarFYI中的服务文件中识别实现。如果
datanucleus.properties
文件的路径中存在空格,则架构生成将失败。该示例对我不起作用:java.lang.NoSuchMethodError:org.apache.hadoop.hbase.hcolumDescriptor.setCompressionType。我不明白为什么,根据POM,HBase版本是0.90.4
,并且我看不到在类路径上引入任何其他版本?您参考的是不推荐使用的示例的v3.0和教程的v3.1。我会解决这个问题。我复制了3.1示例,但仍然得到相同的错误。有什么想法吗?当我下载3.1示例时,取消对“pom.xml”和“datanucleus.properties”中的HBase位的注释,并按照教程运行,效果很好(由于其依赖性问题,您可能需要将hadoop core、HBase和zookeeper的版本更新到更新的版本)。当类路径中有多个jdo实现时(并且通过教程自述文件运行只会引入DataNucleus),只需要“javax.jdo.PersistenceManagerFactoryClass”,否则,它会从datanucleus-api-jdo.jarFYI中的服务文件中识别实现。如果datanucleus.properties
文件的路径中存在空格,则架构生成将失败。该示例对我不起作用:java.lang.NoSuchMethodError:org.apache.hadoop.hbase.hcolumDescriptor.setCompressionType。我不明白为什么,根据POM,HBase版本是0.90.4
,我看不到在类路径上有任何其他版本?