Ein letzter Fehler mit dem Constructor !

Status
Nicht offen für weitere Antworten.

campus

Mitglied
Hallo,

ich befasse mich zurzeit mit dem SDK von VMware. Speziell möchte ich im Moment erstmal eine *.java Datei ans laufen bekommen. Es ist eine vorgefertigte, die eine Verbindung zu einem ESX Server aufbauen soll.
Aber soweit bin ich ja noch nicht.
Ich bekomme die besagte Datei nicht mal compiliert.
(Hier findet Ihr die SimpleClient.java: http://www.kram-hochladen.de/download.php?id=MTEyMDU= )
Ich bin nach der Anleitung vorgegangen aber bekomme immer folgende Fehlermeldungen:
Code:
C:\com\vimsample\simpleclient>javac SimpleClient.java
SimpleClient.java:10: package com.vmware.vim does not exist
import com.vmware.vim.*;
^
SimpleClient.java:19: cannot find symbol
symbol  : class VimServiceLocator
location: class com.vimsample.simpleclient.SimpleClient
   protected VimServiceLocator _locator;
             ^
SimpleClient.java:20: cannot find symbol
symbol  : class VimPortType
location: class com.vimsample.simpleclient.SimpleClient
   protected VimPortType _service;
             ^
SimpleClient.java:22: cannot find symbol
symbol  : class ServiceContent
location: class com.vimsample.simpleclient.SimpleClient
   protected ServiceContent _sic;
             ^
SimpleClient.java:23: cannot find symbol
symbol  : class ManagedObjectReference
location: class com.vimsample.simpleclient.SimpleClient
   protected ManagedObjectReference _svcRef;
             ^
SimpleClient.java:25: cannot find symbol
symbol  : class ManagedObjectReference
location: class com.vimsample.simpleclient.SimpleClient
   protected ManagedObjectReference _propCol;
             ^
SimpleClient.java:26: cannot find symbol
symbol  : class ManagedObjectReference
location: class com.vimsample.simpleclient.SimpleClient
   protected ManagedObjectReference _rootFolder;
             ^
SimpleClient.java:34: cannot find symbol
symbol  : class ManagedObjectReference
location: class com.vimsample.simpleclient.SimpleClient
      _svcRef = new ManagedObjectReference();
                    ^
SimpleClient.java:53: cannot find symbol
symbol  : class VimServiceLocator
location: class com.vimsample.simpleclient.SimpleClient
      _locator = new VimServiceLocator();
                     ^
SimpleClient.java:84: cannot find symbol
symbol  : class TraversalSpec
location: class com.vimsample.simpleclient.SimpleClient
      TraversalSpec resourcePoolTraversalSpec = new TraversalSpec();
      ^
SimpleClient.java:84: cannot find symbol
symbol  : class TraversalSpec
location: class com.vimsample.simpleclient.SimpleClient
      TraversalSpec resourcePoolTraversalSpec = new TraversalSpec();
                                                    ^
SimpleClient.java:90: cannot find symbol
symbol  : class SelectionSpec
location: class com.vimsample.simpleclient.SimpleClient
          new SelectionSpec [] { new SelectionSpec("resourcePoolTraversalSpec") });
              ^
SimpleClient.java:90: cannot find symbol
symbol  : class SelectionSpec
location: class com.vimsample.simpleclient.SimpleClient
          new SelectionSpec [] { new SelectionSpec("resourcePoolTraversalSpec") });
                                     ^

usw.
Zum Beispiel zu dieser: "SimpleClient.java:10: package com.vmware.vim does not exist " Fehlermeldung
Das Verzeichnis C:\com\vmware\vim existiert, aber er findet es wohl nicht.
Ich bin im Moment echt ratlos und bitte um Hilfe!

Gruß
Björn
 
Ich denke mal, Du meinst diese beiden Dateien!

http://www.kram-hochladen.de/download.php?id=MTEyMTQ=
http://www.kram-hochladen.de/download.php?id=MTEyMTU=

die liegen in folgendem Verzeichnis: C:\apps\SDK\samples_2_0\Axis\java
Dort habe ich das komplette SDK von VMware!

[edit]
Die nötigen Vorbereitungen wurden auch schon alle, unter anderem mit dieser Datei (build.bat):
Code:
@REM you need to set 2 env variables : AXISHOME and JAVAHOME, 
@REM or modify the 2 values here
@echo off

setlocal

if DEFINED DONOTBUILDSDK (
   @echo "******** NOT BUILDING SDK SINCE DONOTBUILDSDK IS DEFINED"
   goto END
)

set SAMPLEDIR=.
set SAMPLEJARDIR=.

if NOT DEFINED AXISHOME (
   @echo AXISHOME not defined. Must be defined to build web service apps.
   goto END
)

if NOT DEFINED JAVAHOME (
   @echo JAVAHOME not defined. Must be defined to build java apps.
   goto END
)

if NOT DEFINED WSDLFILE (
   if NOT "x%1" == "x-w" (
      set WSDLFILE=C:\apps\SDK\vimService.wsdl
   )
)

:SETENV
set PATH=%JAVAHOME%\bin;%AXISHOME%\bin;%PATH%
@REM cleanup mail jar files. dont need all of them.

set LOCALCLASSPATH=%CD%;%AXISHOME%\lib\axis-ant.jar;
%AXISHOME%\lib\commons-logging-1.0.4.jar;%AXISHOME%\lib\saaj.jar;
%AXISHOME%\lib\axis.jar;%AXISHOME%\lib\jaxrpc.jar;%AXISHOME%\lib\wsdl4j-1.5.1.jar;
%AXISHOME%\lib\commons-discovery-0.2.jar;%AXISHOME%\lib\log4j-1.2.8.jar;
for %%i in ("lib\*.jar") do call lcp.bat %CD%\%%i

set LOCALCLASSPATH=%LOCALCLASSPATH%%CLASSPATH%

:DOBUILD
@ call C:\apps\SDK\samples_2_0\Axis\java\clean.bat %1

cd %SAMPLEDIR%

if NOT "x%1" == "x-w" (
   mkdir com\vmware\vim

   @echo Generating stubs from wsdl
   java -Xms512M -Xmx512M -classpath %LOCALCLASSPATH% org.apache.axis.wsdl.WSDL2Java -w -O-1 

Nurn:vim2Service=com.vmware.vim -Nurn:vim2=com.vmware.vim -o. C:\apps\SDK\vimService.wsdl

   @echo Compiling stubs.
@ javac -classpath %LOCALCLASSPATH% com\vmware\vim\*.java

   javac -classpath %CLASSPATH% com\vmware\vim\*.java
@echo javac ende anfang jar
   jar cf %SAMPLEJARDIR%\vim.jar com\vmware\vim\*.class
   @echo Done compiling stubs.
)

md com\vmware\vimsample.classes

@echo Compiling samples
dir /b/s com\vmware\vimsample\*.java > files.txt
javac -classpath %LOCALCLASSPATH% -d com\vmware\vimsample.classes @files.txt
del files.txt > nul

jar cf %SAMPLEJARDIR%\vimsamples.jar -C com\vmware\vimsample.classes .

:END
@echo Done.
@echo on

getroffen! Alles Nötige an Verzeichnissen und Dateien wurde, denke ich mal, erstellt.
 
Jo, aber du hast dem Compiler nicht gesagt wo die Klassen liegen. Du mußt über den Parameter --cp den Classpath angeben. Benutz mal die Suche.
 
So alles klar !
Danke für den Hinweis mit dem CLASSPATH.
Nun habe ich aber immer noch 5 Fehler, die aber nichts mit dem CLATHPATH zu zun haben.

C:\com\vimsample\simpleclient>javac SimpleClient.java
SimpleClient.java:90: cannot find symbol
symbol : constructor SelectionSpec(java.lang.String)
location: class com.vmware.vim.SelectionSpec
new SelectionSpec [] { new SelectionSpec("resourcePoolTraversalSpec") });
^
SimpleClient.java:98: cannot find symbol
symbol : constructor SelectionSpec(java.lang.String)
location: class com.vmware.vim.SelectionSpec
new SelectionSpec [] { new SelectionSpec("resourcePoolTraversalSpec") });
^
SimpleClient.java:112: cannot find symbol
symbol : constructor SelectionSpec(java.lang.String)
location: class com.vmware.vim.SelectionSpec
new SelectionSpec [] { new SelectionSpec("folderTraversalSpec") });
^
SimpleClient.java:120: cannot find symbol
symbol : constructor SelectionSpec(java.lang.String)
location: class com.vmware.vim.SelectionSpec
new SelectionSpec [] { new SelectionSpec("folderTraversalSpec") });
^
SimpleClient.java:128: cannot find symbol
symbol : constructor SelectionSpec(java.lang.String)
location: class com.vmware.vim.SelectionSpec
new SelectionSpec [] { new SelectionSpec("folderTraversalSpec"),
^
5 errors

C:\com\vimsample\simpleclient>

Wie es ja schon da steht, gibt es ein Problem mit dem Contructor !
Und zwas an dieser:

Code:
public void getAndPrintInventoryContents()throws Exception {

      TraversalSpec resourcePoolTraversalSpec = new TraversalSpec();
      resourcePoolTraversalSpec.setName("resourcePoolTraversalSpec");
      resourcePoolTraversalSpec.setType("ResourcePool");
      resourcePoolTraversalSpec.setPath("resourcePool");
      resourcePoolTraversalSpec.setSkip(new Boolean(false));
      resourcePoolTraversalSpec.setSelectSet(
	   new SelectionSpec [] { new SelectionSpec("resourcePoolTraversalSpec") });    <--  z.B. HIER

      TraversalSpec computeResourceRpTraversalSpec = new TraversalSpec();
      computeResourceRpTraversalSpec.setName("computeResourceRpTraversalSpec");
      computeResourceRpTraversalSpec.setType("ComputeResource");
      computeResourceRpTraversalSpec.setPath("resourcePool");
      computeResourceRpTraversalSpec.setSkip(new Boolean(false));
      computeResourceRpTraversalSpec.setSelectSet(
	 new SelectionSpec [] { new SelectionSpec("resourcePoolTraversalSpec") }); <--  UND z.B. HIER

usw.

Stelle!

Ich habe mal die dazugehörige SelectionSpec.java hier
http://www.kram-hochladen.de/download.php?id=MTEzNzk=
hochgeladen!
Ich bitte euch nochmal um Hilfe 😳 ... Wenn das läuft, gebe ich einen aus :!: :bae:
 
Ist da nicht an dieser:

Code:
 public SelectionSpec() {
    }

    public SelectionSpec(
           java.lang.String dynamicType,
           com.vmware.vim.DynamicProperty[] dynamicProperty,
           java.lang.String name) {
        super(
            dynamicType,
            dynamicProperty);
        this.name = name;
    }

Stelle ein Konstruktor ??
Oder muss das so:

Code:
 public SelectionSpec(String string) {
    }

    public SelectionSpec(
           java.lang.String dynamicType,
           com.vmware.vim.DynamicProperty[] dynamicProperty,
           java.lang.String name) {
        super(
            dynamicType,
            dynamicProperty);
        this.name = name;
    }

aussehen ?
Habe ich auch schon probiert. Funktioniert aber leider auch nicht.
 
dieser hat offensichtlich drei Parameter, nicht einen we du versuchst auzurufen,

der benötigte Konstruktor muss das Format

Code:
public SelectionSpec(java.lang.String xy) {
..
}
haben

also deine zweite Variante,

'funktioniert nicht' hilft bei solchen Problemen wenig,
versuche solche absoluten Java-Grundlagen erstmal in kleinen Testdateien
public static void main(String[] args) {
new SelectionSpec("test") ;
}

nicht in einem Array drin??? in komplizierten anderem Code??
 
Nimm mir bitte nicht übel, dass ich Dich nicht ganz verstehe was Du von mir willst.
Aber

Code:
public SelectionSpec(java.lang.String xy) {
..
}

haben wir doch hier:

Code:
public SelectionSpec(
           java.lang.String dynamicType,
           com.vmware.vim.DynamicProperty[] dynamicProperty,
           java.lang.String name) {
        super(
            dynamicType,
            dynamicProperty);
        this.name = name;
    }

Naja, eigentlich sollte die ganze Geschichte ja auch so funktionieren.
Das sind vorgefertigte Dateien, die man eigentlich nur noch ausführen muss und nicht noch dran rumbasteln soll.
 
> Nimm mir bitte nicht über, dass ich Dich nicht ganz verstehe was Du von mir willst.
> Aber

Code:
public SelectionSpec(java.lang.String xy) {
..
}

> haben wir doch hier: [..]

mein Konstruktor entspricht deinem
Code:
public SelectionSpec(String string) {
    }
wie gesagt,

aber
Code:
public SelectionSpec(
           java.lang.String dynamicType,
           com.vmware.vim.DynamicProperty[] dynamicProperty,
           java.lang.String name) {
...
    }
ist was völlig anderes, da werden drei Parameter im Konstruktor verlangt, nur ein übergebener String reicht nicht
 
Ich bin die ganze Geschichte nochmal durchgegangen und ich glaube, da er

Code:
 TraversalSpec resourcePoolTraversalSpec = new TraversalSpec();
      resourcePoolTraversalSpec.setName("resourcePoolTraversalSpec");
      resourcePoolTraversalSpec.setType("ResourcePool");
      resourcePoolTraversalSpec.setPath("resourcePool");
      resourcePoolTraversalSpec.setSkip(new Boolean(false));
      resourcePoolTraversalSpec.setSelectSet(
	  new SelectionSpec [] { new SelectionSpec("resourcePoolTraversalSpec") });

hier, die TravelSpec aufruft, liegt der Fehler in der TravelSpec und nicht in der SelectionSpec!!
(Hier die Datei TraveSpec.java)
http://www.kram-hochladen.de/download.php?id=MTE0MDQ=

Ich bin im Moment echt ratlos und bitte dringend um Hilfe, weil ich das Projekt ans laufen bekommen muss.
 
editiere bitte deine Codeblöcke,
füge Zeilenumbrüche ein,

so ist jedes Posting zwei Monitore breit,

und von Datei hochladen geht der Fehler nicht weg,
nenne die aktuelle Fehlermeldung, oder ist es noch die gleiche?
 
So Editiert ...
Ja der Fehler ist immer noch der gleiche
Code:
C:\com\vimsample\simpleclient>javac SimpleClient.java
SimpleClient.java:91: cannot find symbol
symbol  : constructor SelectionSpec(java.lang.String)
location: class com.vmware.vim.SelectionSpec
          new SelectionSpec [] { new SelectionSpec("resourcePoolTraversalSpec") });
                                 ^
SimpleClient.java:99: cannot find symbol
symbol  : constructor SelectionSpec(java.lang.String)
location: class com.vmware.vim.SelectionSpec
          new SelectionSpec [] { new SelectionSpec("resourcePoolTraversalSpec") });
                                 ^
SimpleClient.java:113: cannot find symbol
symbol  : constructor SelectionSpec(java.lang.String)
location: class com.vmware.vim.SelectionSpec
          new SelectionSpec [] { new SelectionSpec("folderTraversalSpec") });
                                 ^
SimpleClient.java:121: cannot find symbol
symbol  : constructor SelectionSpec(java.lang.String)
location: class com.vmware.vim.SelectionSpec
          new SelectionSpec [] { new SelectionSpec("folderTraversalSpec") });
                                 ^
SimpleClient.java:129: cannot find symbol
symbol  : constructor SelectionSpec(java.lang.String)
location: class com.vmware.vim.SelectionSpec
          new SelectionSpec [] { new SelectionSpec("folderTraversalSpec"),
                                 ^
5 errors

C:\com\vimsample\simpleclient>

Ich habe die Datei hochgeladen, weil ich von Ihr gesprochen habe.
 
Lies doch einfach mal das Posting von SlaterB durch.
Die Klasse SelectionSpec kennt keinen Konstruktor welcher NUR einen String als Parameter hat.
 
ich habe mir die Postings durchgelesen und auch schon etwas dazu gesagt.

Code:
public SelectionSpec(java.lang.String name) {
	this.name=name;
    }

Der ist aber jetzt drin und es funktioniert dennoch nicht!
 
und was ist nun deine weitere Frage?
entweder ist Java an sich eine nicht funktionierende Programmiersprache (eher unwahrscheinlich)

oder irgendwas bei dir stimmt nicht,
z.B. fügst du den Konstruktor ein und kompilierst nicht neu/
es werden immer noch die alten jars/ class-Files verwendet

du hast gar keine Compiler, irgendwas mit der IDE, Classpath, usw.
alles mögliche kann schief gehen,
das hat dann nix mit den Dateien oder irgendwas anderem zu tun, was du hochladen könntest

es ist schon merkwürdig genug, dass du java.lang.String statt einfach nur String schreibst,


fang doch mal ganz klein an
Code:
class A {
 public A(String s) {
    System.out.println("huhu in Konstruktor A(String): "+s);   
 }

}

class B {
 public static void main(String[] args) {
    System.out.println("huhu in main in B");   
    A a = new A("wie gehts");
    System.out.println("endein main in B");   
 }
}
bekommst du sowas bei dir zum laufen?

------

falls du dich doch wieder deinem Problem zuwenden willst:
lösche mal SelectionSpec.class, so dass du einen Compiler-Fehler

> cannot find symbol
> symbol : SelectionSpec

oder so ähnlich bekommst
(zum Vergleich: lösche Klasse A und führe B so aus)

danach kompiliere nochmal SelectionSpec, vielleicht wird dann ja der neue Konstruktor richtig erkannt,
funktionier der von dir gepostete Konstruktor überhaupt?
muss da nicht der super-Konstruktor mit Parametern gerufen werden?

ich finde es schon gewagt, in so einer Library mit hunderten Klassen überhaupt zu versuchen, eine zu verändern


wie gesagt teste die fertigen Änderungen nicht mit deinem Programm, sondern mit einer neuen Testklasse wie ich sie vorher schon gepostet hatte,
alternativ zum Konstruktor könntest du ja zunächst mal was anderes probieren, um überhaupt zu sehen, pb die Ändrungen übernommen werden,
füge z.B. eine public static int Konstante mit dem Wert 4434 ein und gebe die in einer Testklasse aus,
wird diese gefunden, der Konstruktor aber immer noch nicht (in dieser Testklasse! nicht in deinem Programm)?
 
SelectionSpec.java
Code:
/**
 * SelectionSpec.java
 *
 * This file was auto-generated from WSDL
 * by the Apache Axis 1.4 Apr 22, 2006 (06:55:48 PDT) WSDL2Java emitter.
 */

package com.vmware.vim;

public class SelectionSpec  extends com.vmware.vim.DynamicData  implements java.io.Serializable {
    private java.lang.String name;

    public SelectionSpec() {
    }

    public SelectionSpec(
           java.lang.String dynamicType,
           com.vmware.vim.DynamicProperty[] dynamicProperty,
           java.lang.String name) {
        super(
            dynamicType,
            dynamicProperty);
        this.name = name;
    }


    /**
     * Gets the name value for this SelectionSpec.
     * 
     * @return name
     */
    public java.lang.String getName() {
        return name;
    }


    /**
     * Sets the name value for this SelectionSpec.
     * 
     * @param name
     */
    public void setName(java.lang.String name) {
        this.name = name;
    }

    private java.lang.Object __equalsCalc = null;
    public synchronized boolean equals(java.lang.Object obj) {
        if (!(obj instanceof SelectionSpec)) return false;
        SelectionSpec other = (SelectionSpec) obj;
        if (obj == null) return false;
        if (this == obj) return true;
        if (__equalsCalc != null) {
            return (__equalsCalc == obj);
        }
        __equalsCalc = obj;
        boolean _equals;
        _equals = super.equals(obj) && 
            ((this.name==null && other.getName()==null) || 
             (this.name!=null &&
              this.name.equals(other.getName())));
        __equalsCalc = null;
        return _equals;
    }

    private boolean __hashCodeCalc = false;
    public synchronized int hashCode() {
        if (__hashCodeCalc) {
            return 0;
        }
        __hashCodeCalc = true;
        int _hashCode = super.hashCode();
        if (getName() != null) {
            _hashCode += getName().hashCode();
        }
        __hashCodeCalc = false;
        return _hashCode;
    }

    // Type metadata
    private static org.apache.axis.description.TypeDesc typeDesc =
        new org.apache.axis.description.TypeDesc(SelectionSpec.class, true);

    static {
        typeDesc.setXmlType(new javax.xml.namespace.QName("urn:vim2", "SelectionSpec"));
        org.apache.axis.description.ElementDesc elemField = new org.apache.axis.description.ElementDesc();
        elemField.setFieldName("name");
        elemField.setXmlName(new javax.xml.namespace.QName("urn:vim2", "name"));
        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
        elemField.setMinOccurs(0);
        elemField.setNillable(false);
        typeDesc.addFieldDesc(elemField);
    }

    /**
     * Return type metadata object
     */
    public static org.apache.axis.description.TypeDesc getTypeDesc() {
        return typeDesc;
    }

    /**
     * Get Custom Serializer
     */
    public static org.apache.axis.encoding.Serializer getSerializer(
           java.lang.String mechType, 
           java.lang.Class _javaType,  
           javax.xml.namespace.QName _xmlType) {
        return 
          new  org.apache.axis.encoding.ser.BeanSerializer(
            _javaType, _xmlType, typeDesc);
    }

    /**
     * Get Custom Deserializer
     */
    public static org.apache.axis.encoding.Deserializer getDeserializer(
           java.lang.String mechType, 
           java.lang.Class _javaType,  
           javax.xml.namespace.QName _xmlType) {
        return 
          new  org.apache.axis.encoding.ser.BeanDeserializer(
            _javaType, _xmlType, typeDesc);
    }

}

Wenn du mir in dem Code (das ist die Datei die du hochgeladen hast) den Konstruktor SelectionSpec(java.lang.String) zeigst dann kriegst du nen Kasten Bier von mir. Und ich bekomm nen Termin beim Augenarzt...
 
So Leute ich habe mir jetzt eine ältere Version von Apache Axis installiert und es funktioniert!
@SlaterB Danke trotzdem für Deine Hilfe und Mühe
@ KSG9|sebastian

DA:
campus hat gesagt.:
ich habe mir die Postings durchgelesen und auch schon etwas dazu gesagt.

Code:
public SelectionSpec(java.lang.String name) {
	this.name=name;
    }

Der ist aber jetzt drin und es funktioniert dennoch nicht!

habe ich gesagt, dass der Konstruktor nun drinne ist !
Und ich habe nicht behauptet, dass der schon in der hochgeladenen Datei ist.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben