2015-01-21 118 views
0

我想在C代碼中使用web服務。我正在努力成爲一名客戶。我需要做一些Axis2java的工作,並從wsdl文件生成類。 我發現Axis2c使(.c)文件從wsdl文件生成。 我從here下載了它。解壓縮它。我爲AXIS2C_HOME創建了環境變量,並創建了AXIS2C_CLASSPATH。 但我無法使它工作。如何使用Axis2c從WSDL文件生成C文件

當我鍵入此命令:

WSDL2C -uri -ss -sd -d none -u -f -o 

我得到這個錯誤:

 
echo off 
Error: Could not find or load main class org.apache.axis2.wsdl.WSDL2C 

我怎麼能解決這個問題。請告訴我如何正確使用這個Axis2c工具。

預先感謝您。

@loentar:我安裝了Axis2/Java,併爲其設置了環境變量。我現在運行wsdl2c.bat我得到這個:

 
E:\dev\Tools\axis2c-bin-1.6.0-win32\bin\tools\wsdl2c>WSDL2C.bat 

E:\dev\Tools\axis2c-bin-1.6.0-win32\bin\tools\wsdl2c>echo off 
Usage: java [-options] class [args...] 
      (to execute a class) 
    or java [-options] -jar jarfile [args...] 
      (to execute a jar file) 
where options include: 
    -d32   use a 32-bit data model if available 
    -d64   use a 64-bit data model if available 
    -server  to select the "server" VM 
        The default VM is server. 

    -cp 
    -classpath 
        A ; separated list of directories, JAR archives, 
        and ZIP archives to search for class files. 
    -D= 
        set a system property 
    -verbose:[class|gc|jni] 
        enable verbose output 
    -version  print product version and exit 
    -version: 
        require the specified version to run 
    -showversion print product version and continue 
    -jre-restrict-search | -no-jre-restrict-search 
        include/exclude user private JREs in the version search 
    -? -help  print this help message 
    -X   print help on non-standard options 
    -ea[:...|:] 
    -enableassertions[:...|:] 
        enable assertions with specified granularity 
    -da[:...|:] 
    -disableassertions[:...|:] 
        disable assertions with specified granularity 
    -esa | -enablesystemassertions 
        enable system assertions 
    -dsa | -disablesystemassertions 
        disable system assertions 
    -agentlib:[=] 
        load native agent library , e.g. -agentlib:hprof 
        see also, -agentlib:jdwp=help and -agentlib:hprof=help 
    -agentpath:[=] 
        load native agent library by full pathname 
    -javaagent:[=] 
        load Java programming language agent, see java.lang.instrument 

    -splash: 
        show splash screen with specified image 
See http://www.oracle.com/technetwork/java/javase/documentation/index.html for m 
ore details. 

後,我運行此命令:

 
E:\dev\Tools\axis2c-bin-1.6.0-win32\bin\tools\wsdl2c>WSDL2C.bat -uri hello.wsdl 
-u -uw 

E:\dev\Tools\axis2c-bin-1.6.0-win32\bin\tools\wsdl2c>echo off 
Unrecognized option: -uri 
Error: Could not create the Java Virtual Machine. 
Error: A fatal exception has occurred. Program will exit. 

我能做些什麼? 我正在使用Windows 8的方式。

回答

0

我設置envinroment變量JAVA_HOME,AXIS2_HOME,AXIS2C_HOME,並增加了他們的lib文件夾到CLASSPATH。運行此命令後: WSDL2C.bat -uri hello.wsdl -u -uw 我得到這個消息:

echo off 
Error: Could not find or load main class org.apache.axis2.wsdl.WSDL2C 

我找到了自己的解決方案。 :) 我再次檢查,如果我已經創建AXIS2_HOME的環境變量,我看到它在那裏,正確。儘管它存在,但我試圖在命令提示符下重新設置它。所以我輸入:

SET AXIS2_HOME=E:\dev\Tools\axis2-1.6.2 

然後我鍵入的命令WSDL2C代碼生成器:

WSDL2C.bat -uri hello.wsdl -u -uw 

和BAM!它工作正常。 現在我可以從WSDL文件生成C文件。

1

除了Axis2/C之外,您還必須安裝Axis2/Java。

AXIS2_HOME必須指向Axis2/Java安裝。

詳情請參閱codegen的README

命令的完整列表,創建和編譯的客戶是:

# create stubs 
sh $AXIS2C_HOME/bin/tools/wsdl2c/WSDL2C.sh -uri Calculator.wsdl -u -uw 

# implement main() in src/your_client.c 
# see samples/codegen/client/calculator for example 

# compile and link client 
gcc -o calculator_client src/*.c -I$AXIS2C_HOME/include/axis2-1.6.0 -L$AXIS2C_HOME/lib -laxutil -laxis2_axiom -laxis2_parser -laxis2_engine -lpthread -laxis2_http_sender -laxis2_http_receiver -ldl -Wl,--rpath -Wl,$AXIS2C_HOME/lib 
+0

我仍然無法使它工作。我在上面的問題中解釋過。 – 2015-01-25 07:09:18