Hallo,
ich bin relativ neu im Webapplication-Umfeld.
Ich habe einen JBoss 7.1 Runtime Server installiert und ein neues Dynamic Web Project erstellt. In dem Projekt habe ich eine Klasse mit main-methode. Dort wird ein Persistenz-Objekt erstellt und in einer Datenbank abgespeichert:
Das funktioniert auch soweit.
Als nächstes habe ich ein Servlet erstellt. Dafür muss ich aufgrund der Annotationen etc. die javaee-Bibliothek einbinden. Ich habe aus einem anderen Projekt die Bibliothek "javaee-api-6.0.jar" übernomen. Das Servlet funktioniert auch einwandfrei, nur funktioniert Handler.main nicht mehr:
Über Google findet man dazu viele Ergebnisse. Dieser Fehler tritt normalerweise auf, weil die "javaee-api-6.0.jar" nur eine API bereitstellt und nicht die Funktionalität. Diese wird nämlich vom Server, also bei mir dem JBoss, bereitgestellt. Als Lösung wird angegeben, man solle die Maven-Dependencies ändern, damit eine andere Bibliothek eingebunden wird.
Ich benutze aber gar kein Maven.
Meine Fragen:
- Wieso lässt sich die Handler.main-Methode von zusätzlichen Bibliotheken beeinflussen? Vorher hat es doch funktioniert.
- Wie kann ich das Problem lösen?
ich bin relativ neu im Webapplication-Umfeld.
Ich habe einen JBoss 7.1 Runtime Server installiert und ein neues Dynamic Web Project erstellt. In dem Projekt habe ich eine Klasse mit main-methode. Dort wird ein Persistenz-Objekt erstellt und in einer Datenbank abgespeichert:
Java:
public class Handler {
public static void main(String[] args) {
MyObject o = new MyObject();
Session session = InitSessionFactory.getInstance().getCurrentSession();
Transaction transaction = session.beginTransaction();
session.save(o);
transaction.commit();
InitSessionFactory.closeSessionFactory();
}
}
Als nächstes habe ich ein Servlet erstellt. Dafür muss ich aufgrund der Annotationen etc. die javaee-Bibliothek einbinden. Ich habe aus einem anderen Projekt die Bibliothek "javaee-api-6.0.jar" übernomen. Das Servlet funktioniert auch einwandfrei, nur funktioniert Handler.main nicht mehr:
Code:
Exception in thread "main" java.lang.ClassFormatError: Absent Code attribute in method that is not native or abstract in class file javax/validation/Validation
[...]
at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:240)
at org.hibernate.cfg.beanvalidation.BeanValidationIntegrator.isBeanValidationApiAvailable(BeanValidationIntegrator.java:173)
at org.hibernate.cfg.beanvalidation.BeanValidationIntegrator.integrate(BeanValidationIntegrator.java:119)
at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:312)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1857)
at main.InitSessionFactory.<clinit>(InitSessionFactory.java:19)
at main.Handler.main(Handler.java:11)
Zeile 19 in InitSessionFactory:
sessionFactory = new Configuration().configure().buildSessionFactory(serviceRegistry);
Über Google findet man dazu viele Ergebnisse. Dieser Fehler tritt normalerweise auf, weil die "javaee-api-6.0.jar" nur eine API bereitstellt und nicht die Funktionalität. Diese wird nämlich vom Server, also bei mir dem JBoss, bereitgestellt. Als Lösung wird angegeben, man solle die Maven-Dependencies ändern, damit eine andere Bibliothek eingebunden wird.
Ich benutze aber gar kein Maven.
Meine Fragen:
- Wieso lässt sich die Handler.main-Methode von zusätzlichen Bibliotheken beeinflussen? Vorher hat es doch funktioniert.
- Wie kann ich das Problem lösen?