Domanda

Ho alcune classi generate da file WSDL da Axis Framework. In una di queste classi c'è un metodo generato


public com.initechsystems.www.initech7.initechbo.Organization createOrganization(com.initechsystems.www.initech7.initechbo.Organization org) throws java.rmi.RemoteException {

//(... snip ...)
_call.setProperty(org.apache.axis.client.Call.SEND_TYPE_ATTR, Boolean.FALSE);
//(... snip ...)
}

L'organizzazione nome variabile nel parametro method crea uno scontro di denominazione con il pacchetto org.apache.axis.client, poiché il compilatore non è in grado di distinguere tra pacchetto e variabile. Mi rendo conto di poterlo risolvere facilmente modificando il nome della variabile org nel metodo, ma vorrei evitarlo, perché rallenta il flusso di lavoro. C'è un modo per aggirare questo se non modificando il file WSDL o le classi generate?

Errore del compilatore:


 D:\projects\java\initechdir\target\generated-sources\axistools\wsdl2java\com\initechsystems\www\initech7\initechws\OrganizationManagement\OrganizationManagementSoapStub.java:[1678,29] cannot find symbol
symbol  : variable apache
location: class com.initechsystems.www.initech7.initechbo.Organization
È stato utile?

Soluzione

C'è un modo per far sì che quel codice generato abbia dichiarazioni di importazione? Ciò ti impedirebbe di avere il nome completo della classe.

Quindi, se potessi aggiungere:

import org.apache.axis.client.Call;

al file, la tua chiamata al metodo sarebbe semplicemente:

_call.setProperty(Call.SEND_TYPE_ATTR, Boolean.FALSE);

Non sono sicuro però che Axis abbia un'opzione per questo. Altrimenti direi che rinominare la variabile (forse in "organizzazione") sarebbe la cosa migliore. Consiglierei di evitare le modifiche manuali dei file generati automaticamente, poiché ciò rende più difficile la loro rigenerazione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top