我想在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.batE:\dev\Tools\axis2c-bin-1.6.0-win32\bin\tools\wsdl2c>echo off用法: java [-options] 类 [args...] (执行类) 或 Java [-选项] -jar jarfile [args...] (执行 jar 文件)其中选项包括: -d32 使用 32 位数据模型(如果可用) -d64 使用 64 位数据模型(如果可用) -服务器以选择"服务器"VM 默认 VM 为服务器。 -cp -类路径 一个;单独的目录列表,JAR 存档, 和 ZIP 存档以搜索类文件。 -D= 设置系统属性 -verbose:[class|gc|jni] 启用详细输出 -版本打印产品版本和退出 -版本: 需要指定的版本才能运行 -显示版本 打印产品版本并继续 -JRE-限制搜索 |-no-jre-restrict-search 在版本搜索中包含/排除用户专用 JRE -?-帮助打印此帮助消息 -X 打印非标准选项的帮助 -ea[:...|:] -启用断言[:...|:] 启用具有指定粒度的断言 -da[:...|:] -禁用断言[:...|:] 禁用具有指定粒度的断言 -欧空局 |-启用系统断言 启用系统断言 -DSA |-禁用系统断言 禁用系统断言 -代理库:[=] 加载本机代理库,例如 -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 -uwE:\dev\Tools\axis2c-bin-1.6.0-win32\bin\tools\wsdl2c>echo off无法识别的选项:-uri错误:无法创建 Java 虚拟机。错误:发生致命异常。程序将退出。
我能做什么?顺便说一下,我正在使用Windows 8。
除了 Axis2/C 之外,您还必须安装 Axis2/Java。
AXIS2_HOME
必须指向 Axis2/Java 安装。
有关详细信息,请参阅代码生成的自述文件。
用于创建和编译客户端的命令的完整列表是:
# 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
我为 JAVA_HOME、AXIS2_HOME、AXIS2C_HOME 设置了 envinroment 变量,并将他们的 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:devToolsaxis2-1.6.2
然后我输入了 WSDL2C 代码生成器的命令:
WSDL2C.bat -uri hello.wsdl -u -uw
砰!它工作正常。现在我可以从 WSDL 文件生成 C 文件。