【问题标题】:has MetaData yet the class cant be found有元数据但找不到类
【发布时间】:2012-09-18 16:28:55
【问题描述】:

Employee.java

@Entity
@Table(name="EMPLOYEE", 
uniqueConstraints = { @UniqueConstraint(columnNames={"EMPNO"}) })
public class Employee implements Serializable {
@Id
@Column(name="EMPNO")
private String empNo;
@Column(name="FIRSTNAME")
private String firstName;
@Column(name="midInit")
private char midInit;
@Column(name="LASTNAME")
private String lastName;
@OneToMany(fetch=FetchType.LAZY, mappedBy = "id.employee")
Set<EmployeeSchedule> schedules;
.....

Schedule.java

@Entity
@Table(name="SCHEDULE_SLOT", uniqueConstraints = { @UniqueConstraint      
  (columnNames=        {"SLOTNO"})})
public class ScheduleSlot implements Serializable{
@Id @Column(name="SLOTNO")
private String slotNo;
@Column(name="SLOTSTART")
private Date slotStart;
@Column(name="SLOTEND")
private Date slotEnd;
@OneToMany(fetch=FetchType.LAZY, mappedBy="id.schedule")
private Set<Employee> employees ;//= new HashSet<Employee>() ;
....

EmployeeSchedule.java

@Entity
@Table(name="EMPLOYEE_SCHEDULE")
@AssociationOverrides(
    { @AssociationOverride 
        (   name = "id.employee", 
            joinColumns = @JoinColumn(name = "empNo")), 
      @AssociationOverride
        (   name = "id.schedule", 
            joinColumns = @JoinColumn(name = "slotNo"))     
    }) 
public class EmployeeSchedule {
@EmbeddedId 
EmployeeSchedulePK id;
@Column(name="available")
private boolean available;
@Column(name="UPDATEDON")
private Date updatedOn;
@Column(name="UPDATEDBY")
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="updatedBy")
private String updatedBy;

public EmployeeSchedule() {}

public EmployeeSchedule(EmployeeSchedulePK id) {
    this.id = id;
}
......

EmployeeSchedulePK .java

@Embeddable
public class EmployeeSchedulePK implements Serializable {
@ManyToOne 
private Employee employee;
@ManyToOne 
private ScheduleSlot schedule;
public EmployeeSchedulePK() {
}

...

在进行 maven 安装时,出现以下错误。请指教..谢谢

DataNucleus Enhancer(版本 3.1.0.release):类的增强 “com.co.dsp.iwork.entity.EmployeeSchedule”类具有元数据,但找不到该类。请检查您的 CLASSPATH 规范。 DataNucleus Enhancer 完成但出现错误。请查看增强器日志以获取完整详细信息。有些类可能已经增强,但有些会导致错误 dataneucleaus 日志显示:- “com.co.dsp.iwork.entity.EmployeeSchedule”类:填充元数据 13:22:59,059(主要)调试 [DataNucleus.MetaData] - 类“com.co.dsp.iwork.entity.EmployeeSchedule”字段“员工”:为嵌入类“com.co.dsp”中的字段添加元数据。 iwork.entity.EmployeeSchedulePK”,因为它没有出现在元数据定义中。 13:22:59,059(主)调试 [DataNucleus.MetaData] - 类“com.co.dsp.iwork.entity.EmployeeSchedule”字段“schedule”:为嵌入类“com.co.dsp”中的字段添加元数据。 iwork.entity.EmployeeSchedulePK”,因为它没有出现在元数据定义中。 13:22:59,060(主)错误 [DataNucleus.MetaData] - *类“com.co.dsp.iwork.entity.#UNKNOWN.id”具有元数据,但找不到该类。 em> 请检查您的 CLASSPATH 规范。* 13:22:59,061(主要)调试 [DataNucleus.MetaData] - org.datanucleus.metadata.InvalidClassMetaDataException:类“com.co.dsp.iwork.entity.EmployeeSchedule”具有元数据,但找不到该类。请检查您的 CLASSPATH 规范。 13:22:59,063(主要)错误 [DataNucleus.Enhancer] - DataNucleus 增强器完成但出现错误。请查看增强器日志以获取完整详细信息。有些类可能已经增强,但有些会导致错误 “com.co.dsp.iwork.entity.EmployeeSchedule”类具有元数据,但找不到该类。请检查您的 CLASSPATH 规范。 org.datanucleus.metadata.InvalidClassMetaDataException:“com.co.dsp.iwork.entity.EmployeeSchedule”类具有元数据,但找不到该类。请检查您的 CLASSPATH 规范。 在 org.datanucleus.metadata.ClassMetaData.populateMemberMetaData(ClassMetaData.java:464) 在 org.datanucleus.metadata.ClassMetaData.populate(ClassMetaData.java:210) 在 org.datanucleus.metadata.MetaDataManager$1.run(MetaDataManager.java:2699) 在 java.security.AccessController.doPrivileged(本机方法) 在 org.datanucleus.metadata.MetaDataManager.populateAbstractClassMetaData(MetaDataManager.java:2693) 在 org.datanucleus.metadata.MetaDataManager.populateFileMetaData(MetaDataManager.java:2516) 在 org.datanucleus.metadata.MetaDataManager.initialiseFileMetaDataForUse(MetaDataManager.java:1123) 在 org.datanucleus.metadata.MetaDataManager.loadPersistenceUnit(MetaDataManager.java:986) 在 org.datanucleus.enhancer.DataNucleusEnhancer.getFileMetadataForInput(DataNucleusEnhancer.java:793) 在 org.datanucleus.enhancer.DataNucleusEnhancer.enhance(DataNucleusEnhancer.java:525) 在 org.datanucleus.enhancer.DataNucleusEnhancer.main(DataNucleusEnhancer.java:1258) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 在 java.lang.reflect.Method.invoke(Method.java:597) 在 org.datanucleus.maven.AbstractDataNucleusMojo.executeInJvm(AbstractDataNucleusMojo.java:333) 在 org.datanucleus.maven.AbstractEnhancerMojo.enhance(AbstractEnhancerMojo.java:249) 在 org.datanucleus.maven.AbstractEnhancerMojo.executeDataNucleusTool(AbstractEnhancerMojo.java:72) 在 org.datanucleus.maven.AbstractDataNucleusMojo.execute(AbstractDataNucleusMojo.java:126) 在 org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101) 在 org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209) 在 org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) 在 org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) 在 org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84) 在 org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59) 在 org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183) 在 org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161) 在 org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320) 在 org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156) 在 org.apache.maven.cli.MavenCli.execute(MavenCli.java:537) 在 org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196) 在 org.apache.maven.cli.MavenCli.main(MavenCli.java:141) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 在 java.lang.reflect.Method.invoke(Method.java:597) 在 org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290) 在 org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230) 在 org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409) 在 org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)

POM.xml :-

 <?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0"  
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0   
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.co.dsp</groupId>
<artifactId>dsp.dsp-iwork</artifactId>
<version>0.6.0-SNAPSHOT</version>
<name>DSP-iWork</name>
<packaging>jar</packaging>
<properties>
    <maven.test.skip>true</maven.test.skip>
    <dsp.version>0.6.0-SNAPSHOT</dsp.version>
    <equinox.ver>3.7.0.v20110613</equinox.ver>
<spring.maven.artifact.version>3.0.5.RELEASE</spring.maven.artifact.version>
    <slf4j.version>1.6.1</slf4j.version>
    <spring.osgi.version>1.2.1</spring.osgi.version>
</properties>
<dependencies>
    <dependency><groupId>com.co.dsp</groupId>
        <artifactId>dsp.kernel</artifactId>
        <version>${dsp.version}</version>
    </dependency>
<dependency><groupId>org.datanucleus</groupId>
        <artifactId>datanucleus-core</artifactId>
        <version>3.1.1</version>
        <scope>runtime</scope>
    </dependency><dependency><groupId>com.co.dsp</groupId>
        <artifactId>dsp.dsi.das.dbconnection</artifactId>
        <version>${dsp.version}</version>
    </dependency><dependency>
        <groupId>com.co.dsp</groupId>
        <artifactId>dsp.dsi.das.core</artifactId>
        <version>${dsp.version}</version>
    </dependency>
    <dependency><groupId>com.co.dsp</groupId>
        <artifactId>dsp.dsi.das.api</artifactId>
        <version>${dsp.version}</version>
    </dependency>
    <dependency><groupId>com.co.dsp</groupId>
        <artifactId>dsp.dsi.dups.core</artifactId>
        <version>${dsp.version}</version>
    </dependency><dependency>
        <groupId>com.co.dsp</groupId>
        <artifactId>dsp.dsi.dups.api</artifactId>
        <version>${dsp.version}</version>
    </dependency><dependency>
        <groupId>com.co.dsp</groupId>
        <artifactId>dsp.dsi.scheduler</artifactId>
        <version>${dsp.version}</version>
    </dependency><dependency>
        <groupId>com.co.dsp</groupId>
        <artifactId>das-maven-plugin</artifactId>
        <version>${dsp.version}</version>
    </dependency>
</dependencies>
<repositories>
    <repository><id>nexus</id>
<url>http://sjc1ssadsp01.crd.co.com:8081/nexus/content/groups/public</url>
    </repository>
</repositories>
<pluginRepositories>
    <pluginRepository>
        <id>nexus</id>
<url>http://sjc1ssadsp01.crd.co.com:8081/nexus/content/groups/public</url>
    </pluginRepository>
    <pluginRepository>
        <id>maven-repo</id>
        <name>maven repo</name>
        <url>http://repo.maven.apache.org/maven2/</url>
    </pluginRepository>
    <pluginRepository>
        <id>com.springsource.repository.bundles.milestone</id>
<name> SpringSource Enterprise Bundle Repository - SpringSource Milestone 
Releases</name>
<url>http://repository.springsource.com/maven/bundles/milestone</url>
    </pluginRepository>
</pluginRepositories>
<build><plugins><plugin>
<groupId>org.datanucleus</groupId>
<artifactId>maven-datanucleus-plugin</artifactId>
<version>3.0.1</version>
<configuration>
<fork>false</fork>
<log4jConfiguration>${basedir}/log4j.properties</log4jConfiguration>
<verbose>true</verbose>
<enhancerName>ASM</enhancerName>
<persistenceUnitName>WorkPersistenceUnit</persistenceUnitName>
</configuration><executions><execution>
<phase>compile</phase><goals><goal>enhance</goal></goals></execution></executions>
</plugin><plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>2.3.7</version>
<extensions>false</extensions><executions>  <execution>
<id>bundle</id> <phase>package</phase><goals>
<goal>bundle</goal></goals></execution></executions>
<configuration>
<instructions>
<Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
<Bundle-Name>DSP iWork Integration</Bundle-Name>
<Bundle-Version>${dsp.version}</Bundle-Version>
<Bundle-Classpath>.</Bundle-Classpath>
<Import-Package>javax.persistence,com.co.dsp.dsi.scheduler,org.apache.log4j,
com.co.dsp.kernel.spi;version="0.3",com.co.dsp.kernel.util;version="0.3",
com.co.dsp.dsi.dups.api;version="0.3",com.co.dsp.dsi.dups.constants;version="0.3",
com.co.dsp.dsi.dups.exception,com.co.dsp.dsi.config,org.springframework.beans.factory,
org.springframework.osgi.context,org.springframework.osgi.util,
org.osgi.framework;version="1.5",com.co.dsp.dsi.das.api,javax.jdo, 
javax.jdo.identity, javax.jdo.spi</Import-Package></instructions></configuration>
</plugin></plugins>
    </build>
</project>

执行后更新部分消息:mvn clean process-classes -X

   [DEBUG]Writing resolution tracking file C:\Users\502128830\.m2
\repository\asm\asm\resolver-status.properties
[DEBUG]Could not find metadata asm:asm/maven-metadata.xml in 
com.springsource.repository.bundles.milestone 
(http://repository.springsource.com/maven/bundles/milestone)
[DEBUG]Could not find metadata asm:asm/maven-metadata.xml in DN_M2_Repo 
(http://www.datanucleus.org/downloads/maven2/)
[WARNING]Could not transfer metadata asm:asm/maven-metadata.xml from/to 
local.repository (file:../../local.repository/trunk): No connector available to access 
repository     local.repository (file:../../local.repository/trunk) of type leg
acy using the available factories WagonRepositoryConnectorFactory
org.sonatype.aether.transfer.MetadataTransferException: Could not transfer metadata 
asm:asm/maven-metadata.xml from/to local.repository         
(file:../../local.repository/trunk): No connector available to access repository 
local.repository (
file:../../local.repository/trunk) of type legacy using the available factories 
WagonRepositoryConnectorFactory
        at org.sonatype.aether.impl.internal.DefaultMetadataResolver$ResolveTask.run
(DefaultMetadataResolver.java:588)
        at org.sonatype.aether.util.concurrency.RunnableErrorForwarder$1.run
(RunnableErrorForwarder.java:60)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask
(ThreadPoolExecutor.java:886)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run
(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:662)
Caused by: org.sonatype.aether.transfer.NoRepositoryConnectorException: No connector 
available to access repository local.repository (file:../../local.repository/trunk) 
of     type legacy using the available factories WagonRepositoryConnec
torFactory
        at 
org.sonatype.aether.impl.internal.DefaultRemoteRepositoryManager.getRepositoryConnector
(DefaultRemoteRepositoryManager.java:400)
        at org.sonatype.aether.impl.internal.DefaultMetadataResolver$ResolveTask.run
(DefaultMetadataResolver.java:559)
        ... 4 more
[DEBUG]Could not find metadata asm:asm/maven-metadata.xml in local (C:\Users\502128830
\.m2\repository)


[INFO]--- maven-datanucleus-plugin:3.0.1:enhance (default) @ dsp.dsp-iwork ---
[DEBUG]Could not find metadata org.datanucleus:datanucleus-core/maven-metadata.xml in 
local (C:\Users\502128830\.m2\repository)
 [WARNING]Could not transfer metadata asm:asm/maven-metadata.xml from/to 
local.repository (file:../../local.repository/trunk): No connector available to access 
repository     
local.repository (file:../../local.repository/trunk) of type leg
acy using the available factories WagonRepositoryConnectorFactory
org.sonatype.aether.transfer.MetadataTransferException: Could not transfer metadata 
asm:asm/maven-metadata.xml from/to local.repository     
(file:../../local.repository/trunk): No connector available to access repository 
local.repository (
file:../../local.repository/trunk) of type legacy using the available factories 
WagonRepositoryConnectorFactory
at org.sonatype.aether.impl.internal.DefaultMetadataResolver$ResolveTask.run
(DefaultMetadataResolver.java:588)
at org.sonatype.aether.util.concurrency.RunnableErrorForwarder$1.run
(RunnableErrorForwarder.java:60)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run
(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:662)
Caused by: org.sonatype.aether.transfer.NoRepositoryConnectorException: No connector 
available to access repository local.repository (file:../../local.repository/trunk) 
of  type legacy using the available factories WagonRepositoryConnec
torFactory
        at 
org.sonatype.aether.impl.internal.DefaultRemoteRepositoryManager.getRepositoryConnector
(DefaultRemoteRepositoryManager.java:400)
        at org.sonatype.aether.impl.internal.DefaultMetadataResolver$ResolveTask.run
(DefaultMetadataResolver.java:559)
        ... 4 more

【问题讨论】:

    标签: maven jpa many-to-many datanucleus


    【解决方案1】:

    你能发布你的 pom 吗?

    您想使用 DataNucleus Enhancer 处理字节码。

    您的插件绑定到编译阶段,这是错误的,因为它适用于已编译的类。

    您应该将其绑定到进程类。

    【讨论】:

    • 好的,你应该把它绑定到 process-classes 而不是 compile
    • 所以你的 pom 中有 process-classesenhance?您能否运行“mvn clean process-classes -X”并发布结果?
    • 是的 pom 现在有: process-classes增强
    • 执行 mvn clean process-classes -X 的输出消息大约是 290000,这比 stackoverflow 支持的要多。我无法以任何方式连接。有什么身份证可以发邮件给你吗?
    • 我已经用部分输出更新了这条消息...非常感谢您对这个问题的帮助。
    猜你喜欢
    • 2019-08-24
    • 2011-05-18
    • 2011-04-30
    • 2022-10-20
    • 2022-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多