0

我想在 C 代码中使用 web 服务。我正在尝试做一个客户。我需要做 Axis2java 所做的事情并从 wsdl 文件生成类。我发现 Axis2c 生成从 wsdl 文件生成的 (.c) 文件。我从这里下载了它。解压它。我为 AXIS2C_HOME 创建了环境变量,并创建了 AXIS2C_CLASSPATH。但我不能让它工作。

当我键入此命令时:

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

我收到此错误:

回声
错误:无法找到或加载主类 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>回显关闭
用法:java [-options] 类 [args...]
           (执行一个类)
   或 java [-options] -jar jarfile [args...]
           (执行一个jar文件)
其中选项包括:
    -d32 使用 32 位数据模型(如果可用)
    -d64 使用 64 位数据模型(如果可用)
    -server 选择“服务器”VM
                  默认虚拟机是服务器。

    -cp
    -类路径
                  一个 ; 单独的目录列表、JAR 档案、
                  和 ZIP 档案来搜索类文件。
    -D=
                  设置系统属性
    -详细:[类|gc|jni]
                  启用详细输出
    -version 打印产品版本并退出
    -版本:
                  需要指定版本才能运行
    -showversion 打印产品版本并继续
    -jre 限制搜索 | -no-jre-restrict-搜索
                  在版本搜索中包含/排除用户私有 JRE
    -?-help 打印此帮助信息
    -X 打印非标准选项的帮助
    -ea[:...|:]
    -enableassertions[:...|:]
                  启用具有指定粒度的断言
    -da[:...|:]
    -disableassertions[:...|:]
                  禁用具有指定粒度的断言
    -esa | -启用系统断言
                  启用系统断言
    -dsa | -禁用系统断言
                  禁用系统断言
    -agentlib:[=]
                  加载本机代理库,例如 -agentlib:hprof
                  另请参见 -agentlib:jdwp=help 和 -agentlib:hprof=help
    -代理路径:[=]
                  按完整路径名加载本机代理库
    -javaagent:[=]
                  加载 Java 编程语言代理,参见 java.lang.instrument

    -溅:
                  显示带有指定图像的启动画面
请参阅 http://www.oracle.com/technetwork/java/javase/documentation/index.html 了解 m
矿石细节。

之后我运行这个命令:

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>回显关闭
无法识别的选项:-uri
错误:无法创建 Java 虚拟机。
错误:发生了致命异常。程序将会退出。

我能做些什么 ?顺便说一句,我正在使用Windows 8。

4

2 回答 2

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
于 2015-01-21T22:06:03.453 回答
0

我为 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

和砰!它工作正常。现在我可以从 WSDL 文件生成 C 文件。

于 2015-01-26T06:49:07.597 回答