ubuntuusers.de

javax.activation.Handler und javax.mail.internet.MimeMutlipart

Status: Ungelöst | Ubuntu-Version: Ubuntu 11.04 (Natty Narwhal)
Antworten |

pancake718

Anmeldungsdatum:
28. März 2009

Beiträge: 28

Hallo!

Ich versuche gerade verzweifelt meinen Laptop dazuzubekommen, die KEGG API zu benutzen. Es gibt eine kleine Anleitung, wie man es machen muss (http://www.kegg.jp/kegg/soap/doc/keggapi_manual.html#label:11), die ich versuche zu befolgen. Ich soll ein Pearl-Skript herunterladen und dann folgende Befehle eingeben:

1
2
3
4
5
% java -classpath /path/to/lib/axis.jar:/path/to/lib/jaxrpc.jar:/path/to/lib/commons-logging.jar:/path/to/lib/commons-discovery.jar:/path/to/lib/saaj.jar:/path/to/lib/wsdl4j.jar:. org.apache.axis.wsdl.WSDL2Java -p keggapi http://soap.genome.jp/KEGG.wsdl
% perl -i axisfix.pl keggapi/KEGGBindingStub.java
% javac -classpath /path/to/lib/axis.jar:/path/to/lib/jaxrpc.jar:/path/to/lib/wsdl4j.jar:. keggapi/KEGGLocator.java
% jar cvf keggapi.jar keggapi/*
% javadoc -classpath /path/to/lib/axis.jar:/path/to/lib/jaxrpc.jar -d keggapi_javadoc keggapi/*.java

allerdings bekomme ich direkt bei dem ersten Befehl folgende Fehlermeldung:

1
WARNUNG: Unable to find required classes (javax.activation.DataHandler and javax.mail.internet.MimeMultipart). Attachment support is disabled.

habe mir also dieses javax.activation.DataHandler heruntergeladen und es ist ja dann so: ordner javax → ordner activation → DataHandler.class Wenn ich das jetzt so in mein /usr/share/javax kopiere kriege ich denselben Fehler, habe es also in denselben Ordner gepackt, indem auch die -jar-Files liegen, aber Fehlanzeige! Auch das geht nicht!

Was ist denn das Problem? Habe jetzt gar nicht mehr nach dem anderen gesucht, weil das erste ja schon nichtmal klappt. Kann mir vielleicht jemand damit helfen?

EDIT: habe außerdem nach javax in Software-Center gesucht und Geronimo API implementation of the JavaMail und of the Activation installiert, aber auch beides ohne jeglichen Erfolg.

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17621

Wohnort: Berlin

pancake718 schrieb:

Hallo!

Ich versuche gerade verzweifelt meinen Laptop dazuzubekommen, die KEGG API zu benutzen. Es gibt eine kleine Anleitung, wie man es machen muss (http://www.kegg.jp/kegg/soap/doc/keggapi_manual.html#label:11), die ich versuche zu befolgen. Ich soll ein Pearl-Skript herunterladen und dann folgende Befehle eingeben:

1
% java -classpath /path/to/lib/axis.jar:/path/to/lib/jaxrpc.jar:/path/to/lib/commons-logging.jar:/path/to/lib/commons-discovery.jar:/path/to/lib/saaj.jar:/path/to/lib/wsdl4j.jar:. org.apache.axis.wsdl.WSDL2Java -p keggapi http://soap.genome.jp/KEGG.wsdl

allerdings bekomme ich direkt bei dem ersten Befehl folgende Fehlermeldung:

1
WARNUNG: Unable to find required classes (javax.activation.DataHandler and javax.mail.internet.MimeMultipart). Attachment support is disabled.

Hast Du schon mit Java gearbeitet und kennst Dich mit classpath-Fragen aus?

Hast Du den Befehl wortwörtlich wie oben benutzt (/path/to/...)?

theinlein

Anmeldungsdatum:
29. Dezember 2007

Beiträge: 1279

Hi,

kenne KEGG nicht, aber deine Zeilen kommen mir komisch vor: erst wird jave .... aufgerufen, dann erst mit perl etc. ein jar gebaut.

Was kommt dann? Muss die zeile 1 nicht hinter Zeile 5 kommen?

Das ist pure Mutmaßung, ich stochere jetzt mal herum ....

pancake718

(Themenstarter)

Anmeldungsdatum:
28. März 2009

Beiträge: 28

Ja, habe schon mit java gearbeitet. Habe meinen Path natürlich geändert (habe es auch mit tab gemacht, da vervollständigt er ja eh nur das, was auch da liegt).

ich dachte das wären 2 schritte in einem. erster schritt ist axis und zweiter die keggapi, weil ich ja dieses axis brauche um die api nutzen zu können. oder hab ich das falsch verstanden?

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17621

Wohnort: Berlin

pancake718 schrieb:

1
2
3
4
5
6
7
% java -classpath /path/to/lib/axis.jar:
  /path/to/lib/jaxrpc.jar:
  /path/to/lib/commons-logging.jar: 
  /path/to/lib/commons-discovery.jar:
  /path/to/lib/saaj.jar:
  /path/to/lib/wsdl4j.jar:
  . org.apache.axis.wsdl.WSDL2Java -p keggapi http://soap.genome.jp/KEGG.wsdl

(Ich habe mal Umbrüche zur einfachen Sichtbarkeit eingefügt.)

allerdings bekomme ich direkt bei dem ersten Befehl folgende Fehlermeldung:

1
WARNUNG: Unable to find required classes (javax.activation.DataHandler and javax.mail.internet.MimeMultipart). Attachment support is disabled.

habe mir also dieses javax.activation.DataHandler heruntergeladen und es ist ja dann so: ordner javax → ordner activation → DataHandler.class Wenn ich das jetzt so in mein /usr/share/javax kopiere kriege ich denselben Fehler,

Ist denn /usr/share im classpath? Das müßte dann ja . sein, denn sonst - wie sollte die Klasse gefunden werden?

habe es also in denselben Ordner gepackt, indem auch die -jar-Files liegen,

Wozu soll das gut sein?

aber Fehlanzeige! Auch das geht nicht!

Der Classpath beschreibt wo die Klassen liegen - entweder, das ist ein Ordner, also das Elternverzeichnis von javax, oder ein Jarfile. Dass Du nur die eine Klasse brauchen wirst ist unwahrscheinlich, aber probieren kannst Du es ja. Ich denke aber, da kommen weitere Meldungen nach, und Du bist mit der Mail-API als jar besser bedient, als einzelne Klassen runterzuladen, und jeweils einen Verzeichnispfad dafür zu bauen.

EDIT: habe außerdem nach javax in Software-Center gesucht und Geronimo API implementation of the JavaMail und of the Activation installiert, aber auch beides ohne jeglichen Erfolg.

Und das jar in den Classpath aufgenommen?

pancake718

(Themenstarter)

Anmeldungsdatum:
28. März 2009

Beiträge: 28

Also ich habe mir die classpath-sache nochmal genauer angeschaut, und es jetzt so aufgebaut:

KEGG → lib → jar-files KEGG → org → package → class-files

mein Kommando dann:

1
java -classpath KEGG/:KEGG/lib/axis.jar:KEGG/lib/commons-logging(...):. org.apache.axis.wsdl.WSDL2Java -p keggapi http://soap.genome.jp/KEGG.wsdl

also wie vorher, nur den path geändert. aber jetzt bekomme ich eine Exception:

1
2
3
Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/rpc/encoding/TypeMappingRegistry
(...)
caused by: java.lang.ClassNotFoundException: javax.xml.rpc.encoding.TypeMappingRegistry

habe im Internet gelesen, dass der NoClassDefFoundError bedeutet, dass zur compileZeit die Klasse gefunden werden konnte, beim ausführen aber nicht mehr. Allerdings steht dann aber caused by: ClassNotFoundException, was ja einfach hieße, dass mir die Klasse fehlt, oder?

Wenn ja, woher bekomm ich sie? Weiß gar nicht genau, was die tut.

Antworten |