Avatar billede sbm Nybegynder
18. august 2005 - 15:43 Der er 10 kommentarer og
1 løsning

Java 5.0 og Axis

Jeg har en applikation, som jeg forsøger at få til at køre under den nyeste java. (Applikationen fungerer fint under 1.4.2)

Jeg har installeret java, sat java_home og alle de øvrige variable op. Dertil har jeg installeret den nyeste ANT (v1.6.5) og Axis (v.1.2.1)

Jeg benytter så WSDL4J til at autogenerere nogle klasser, og nogle af disse linier fejler når jeg forsøger at kompilere applikationen.

setUse(org.apache.axis.enum.Use) in org.apache.axis.description.OperationDesc cannot be applied to (org.apache.axis.constants.Use)
oper.setUse(org.apache.axis.constants.Use.ENCODED);

Jeg kan ikke greje hvad jeg gør forkert. Koden er jo autogenereret, og der fik jeg ingen fejl. :-/

Kan der være noget jeg mangler at downloade og installere?
Avatar billede arne_v Ekspert
18. august 2005 - 18:20 #1
genereres samme kode med 1.4.2 og 1.5.0 ?

hvis ja - hvordan ser linien med fejlen ud ?
Avatar billede sbm Nybegynder
18. august 2005 - 18:30 #2
Nej. Det væsentlige er versionen af axis, hvor axis 1.1 ser anderledes ud. Det skyldes at de metoder som blev gjort brug af i den autogenererede v. 1.1 kode er deprecated, og det tager axis 1.2.1 højde for, og koden ser derfor anderledes ud.
Avatar billede arne_v Ekspert
18. august 2005 - 18:34 #3
så du har noget som virker med Axis 1.1 og ikke virker med Axis 1.2.1 (og
formentlig er versionen af Java ligegyldig - bortset fra at Axis 1.2.1 har
lavet om af hensyn til Java 1.5.0) ?

kan du poste den genererede kode eller bedre WSDL'en ?
Avatar billede sbm Nybegynder
18. august 2005 - 23:19 #4
Axis har afgjort lavet nogle tilpasninger til Java. enum er blevet et reserveret ord osv. Det var også derfor jeg opgraderede fra 1.1 til 1.2.1.

Jeg har tilladt mig at antage at wsdl er sund og rask, da den fungerer fint inden skiftet. Mit problem må være en manglende opgradering el.lign. Fejlmeddelelsen siger at metoden setUse(org.apache.axis.enum.Use) ikke kan benyttes. Men når jeg kigger i javadoc er den der. Og hvis jeg i Eclipse beder om at få en liste over mulige metoder er den der også. og hvis jeg tjekker hvilken javaversion Ant kører under, siger den klart 1.5.0.

I'm puzzled.
Avatar billede sbm Nybegynder
18. august 2005 - 23:20 #5
Eftersom metodekalder også er fra autogenereret kode, MÅ metoden være god-fin. Jeg kan så bare ikke lure hvorfor den bliver tosset.
Avatar billede arne_v Ekspert
18. august 2005 - 23:26 #6
den siger jo at du kalder med en forkert Use

hvis jeg får WSDL'en kan jeg selv forsøge med diverse Axis og Java versioner
Avatar billede sbm Nybegynder
19. august 2005 - 09:38 #7
Ok. Det kan jeg prøve næste gang jeg er i nærheden af min egen maskine.

Jeg kom dog til at tænke på... Jeg kørte en "ant -diagnostics" for at se hvilke variable den arbejdede med. Alt så fint ud. Men jeg studsede over at jeg ikke kunne se nogen angivelse af hvilken axis den brugte. Ingen axis i java.class.path el.lign. Hverken version 1.1 eller 1.2.1. Jeg har så i systemvariable sat axis_home til at pege på version 1.2.1, men kan det tænkes at det er her skoen klemmer? At den fejlagtigt benytter den gamle axis...?

Hvor hulen kan jeg specifikt få ant til at benytte version 1.2.1?
Avatar billede sbm Nybegynder
19. august 2005 - 09:45 #8
Found it. I ant-scriptet er der allerede sat op til at axis specifikt skal være ${env.AXISHOME}/lib så den benytter den rigtige version.
Avatar billede sbm Nybegynder
19. august 2005 - 14:19 #9
Hov. Jeg har helt - i min eufori - glemt at vende tilbage hertil.

Problemet viste sig at jeg stadig havde en ældre version af axis til at ligge og rode, som den så fik brugt istedet for den nye. Det gav selvfølgelig fejl.

Straks da jeg fjernede den, kørte det som det skulle.

Smid et svar, så du kan få point for din tid. :-)
Avatar billede arne_v Ekspert
19. august 2005 - 14:28 #10
ok

jeg formoder at problemer var at der bleb genereret stub med en version og
compilet med en anden version ?
Avatar billede sbm Nybegynder
19. august 2005 - 14:33 #11
Forskellige version af axis, ja.

Jeg fik genereret stub-klasser ud fra wsdl med axis version 1.2.1, men ved kompilering af hele projektet via ant, fik en tidligere version af axis lusket sig ind foran 1.2.1, og så var balladen der.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester