Как использовать Axis2c для создания файлов C из файла WSDL

Я хочу использовать веб-сервис в коде C. Я пытаюсь сделать клиент. Мне нужно что-то, что делает Axis2java и генерирует классы из файлов wsdl. Я обнаружил, что Axis2c создает файлы (.c), созданные из файла wsdl. Я скачал его с здесь . распаковал его. Я создал переменную среды для AXIS2C_HOME и создал AXIS2C_CLASSPATH. но я не могу заставить его работать.

когда я набираю эту команду:

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.


person Sarah Aziziyan    schedule 21.01.2015    source источник


Ответы (2)


В дополнение к Axis2/C у вас должна быть установлена ​​Axis2/Java.

AXIS2_HOME должен указывать на установку Axis2/Java.

Подробнее см. в README codegen.

Полный список команд для создания и компиляции клиента:

# 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
person loentar    schedule 21.01.2015
comment
Я все еще не могу заставить его работать. Я объяснил в вопросе выше. - person Sarah Aziziyan; 25.01.2015

Я установил переменную окружения для 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

И БАМ! он работал правильно. Теперь я могу генерировать файлы C из файла WSDL.

person Sarah Aziziyan    schedule 26.01.2015