开发者

JPA still have a reference of a deleted Entity, hence generating Exception

I delete entity FriendWith and create RelationShip. But the JPA still think FriendWith is there. When I deploy the EE application here is what I got in my server log.

[#|2010-11-05T14:31:51.190-0400|INFO|glassfish3.1|javax.enterprise.system.core.classloading.com.sun.enterprise.loader|_ThreadID=17;_ThreadName=Thread-1;|com.scholar.entity.<error> actually got transformed|#]

I know com.scholar.entity.<error> refer to com.scholar.entity.FriendWith

java.lang.ExceptionInInitializerError
  at java.lang.Class.forName0(Native Method)
  at java.lang.Class.forName(Class.java:247)
  at org.eclipse.persistence.internal.security.PrivilegedAccessHelper.getClassForName(PrivilegedAccessHelper.java:88)
  at org.eclipse.persistence.descriptors.ClassDescriptor.convertClassNamesToClasses(ClassDescriptor.java:1230)
  at org.eclipse.persistence.sessions.Project.convertClassNamesToClasses(Project.java:362)
  at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:332)
  at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.getServerSession(EntityManagerFactoryImpl.java:157)
  at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:214)
  at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:202)
  at org.glassfish.persistence.jpa.PersistenceUnitLoader.doJava2DB(PersistenceUnitLoader.java:371)
  at org.glassfish.persistence.jpa.JPADeployer$2.visitPUD(JPADeployer.java:241)
  at org.glassfish.persistence.jpa.JPADeployer$PersistenceUnitDescriptorIterator.iteratePUDs(JPADeployer.java:279)
  at org.glassfish.persistence.jpa.JPADeployer.iterateInitializedPUsAtApplicationPrepare(JPADeployer.java:257)
  at org.glassfish.persistence.jpa.JPADeployer.event(JPADeployer.java:199)
  at org.glassfish.kernel.event.EventsImpl.send(EventsImpl.java:128)
  at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:419)
  at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:242)
  at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:351)
  at com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:354)
  at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:369)
  at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1077)
  at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1200(CommandRunnerImpl.java:95)
  at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1226)
  at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1215)
  at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:375)
  at com.sun.enterprise.v3.admin.AdminAdapter.service(AdminAdapter.java:209)
  at com.sun.grizzly.tcp.http11.GrizzlyAdapter.service(GrizzlyAdapter.java:168)
  at com.sun.enterprise.v3.server.HK2Dispatcher.dispath(HK2Dispatcher.java:117)
  at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:234)
  at com.sun.grizzly.http.ProcessorTask开发者_如何学运维.invokeAdapter(ProcessorTask.java:817)
  at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:718)
  at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1007)
  at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225)
  at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
  at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
  at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
  at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
  at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
  at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
  at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
  at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
  at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
  at java.lang.Thread.run(Thread.java:680)

Caused by: java.lang.RuntimeException: Uncompilable source code - class <error> is public, should be declared in a file named <error>.java
at com.scholar.entity.<error>.<clinit>(FriendWith.java:22)
... 43 more

if u look at the bottom of the stack trace, you can see that it said there is something wrong at FriendWith line 22. There is no FriendWith.java. Is there a way to fix this. I clean and build the Project Folder, restart server, restart computer, but it does not fix it


Even if you've deleted FriendWith.java, it's possible you left FriendWith.class around, and the JPA package is finding that, somewhere.

Search your jars, wars, ears, or whatever and your filesystem for the class file. If you are copying your built project to a "deploy" location, make sure the .class file is not in the deploy area.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜