Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Ошибка при деплое


Автор: salat 18.12.2009, 01:26
Подскажите пожалуйста в чем может быть ошибка. При деплое в NetBeans выдает:

Checking for missing drivers
Start registering the project's server resources
Finished registering server resources
Initial deploying VoteSystem to C:\Java\MyProjects\VoteSystem\dist\gfdeploy
Completed initial distribution of VoteSystem
Start registering the project's server resources
Finished registering server resources
moduleID=VoteSystem
deployment started : 0%
Deploying application in domain failed; Exception [TOPLINK-28018] (Oracle TopLink Essentials - 2.1 (Build b60e-fcs (12/23/2008))): oracle.toplink.essentials.exceptions.EntityManagerSetupException
Exception Description: predeploy for PersistenceUnit [VoteSystem-ejbPU] failed.
Internal Exception: Exception [TOPLINK-30007] (Oracle TopLink Essentials - 2.1 (Build b60e-fcs (12/23/2008))): oracle.toplink.essentials.exceptions.PersistenceUnitLoadingException
Exception Description: An exception was thrown while loading class: votesystem.VoteSystemSessionRemote to check whether it implements @Entity, @Embeddable, or @MappedSuperclass.
Internal Exception: java.lang.ClassNotFoundException: votesystem.VoteSystemSessionRemote
C:\Java\MyProjects\VoteSystem\nbproject\build-impl.xml:285: The module has not been deployed.
BUILD FAILED (total time: 1 second)


Код

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package votesystem;

import java.io.Serializable;
import java.util.Collection;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;


@Entity
@Table(name = "RESULTS")
@NamedQueries({@NamedQuery(name = "Results.findAll", query = "SELECT r FROM Results r"),
@NamedQuery(name = "Results.findById", query = "SELECT r FROM Results r WHERE r.id = :id"),
@NamedQuery(name = "Results.findByTheme", query = "SELECT r FROM Results r WHERE r.theme = :theme"),
@NamedQuery(name = "Results.findByCountFor", query = "SELECT r FROM Results r WHERE r.countFor = :countFor"),
@NamedQuery(name = "Results.findByCountAgainst", query = "SELECT r FROM Results r WHERE r.countAgainst = :countAgainst"),
@NamedQuery(name = "Results.findByIsActive", query = "SELECT r FROM Results r WHERE r.isActive = :isActive")})
public class Results implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @Column(name = "ID", nullable = false)
    @GeneratedValue
    private Integer id;
    @Column(name = "THEME")
    private String theme;
    @Column(name = "COUNT_FOR")
    @OneToMany
    private Collection<Person> countFor;
    @Column(name = "COUNT_AGAINST")
    @OneToMany
    private Collection<Person> countAgainst;
    @Column(name = "IS_ACTIVE")
    private Integer isActive;

    public Results() {
    }

    public Results(Integer id) {
        this.id = id;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getTheme() {
        return theme;
    }

    public void setTheme(String theme) {
        this.theme = theme;
    }

    public Collection<Person> getCountFor() {
        return countFor;
    }

    public void setCountFor(Person person) {
        countFor.add(person);
    }


    public Collection<Person> getCountAgainst() {
        return countAgainst;
    }

    public void setCountAgainst(Person person) {
        countAgainst.add(person);
    }

    public Integer getIsActive() {
        return isActive;
    }

    public void setIsActive(Integer isActive) {
        this.isActive = isActive;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (id != null ? id.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Results)) {
            return false;
        }
        Results other = (Results) object;
        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "votesystem.Results[id=" + id + "]";
    }

}



Есть подозрение, что ошибка возникает из-за неправильного задания отношений @OneToMany

Автор: Joss 18.12.2009, 09:52
А при чем тут Results, вообще? Вроде бы ругается на вполне конкретный класс votesystem.VoteSystemSessionRemote. 

Автор: MisterCleric 18.12.2009, 10:29
Ошибка в том, в CLASSPATH нету конкретного класса:

Цитата

java.lang.ClassNotFoundException: votesystem.VoteSystemSessionRemote

Автор: salat 19.12.2009, 22:04
Дело в том, этот класс есть. Приписан даже CLASSPATH  в системных переменных.

Автор: dobrolub 19.12.2009, 22:46
это не такая простая ошибка. К сожалению сообщение не отражает проблемы, а валиться в какой-то общий catch. 
гугл следующее: "TOPLINK Exception Description: An exception was thrown while loading class"

там будет куча постов, многие рекомендуют воссоздать persistence.xml с нуля.

Автор: dobrolub 19.12.2009, 23:11
ещё можно поискать где у топлинк включается расширенное сообщение об ошибках, может при более подробном логгинге распечатают настоящую причину проблемы

Автор: salat 20.12.2009, 14:22
Покопался в том, что выдает glassfish, подкорректировал сущностный класс result, ошибка исчезла. Спасибо всем за помощь.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)