LINUX.ORG.RU

[java] запуск jar

 


0

0

Доброго времени суток!
Описание проблемы:
есть маленький проект xmlbeansxx
(http://top.touk.pl/confluence/display/xmlbeansxxdoc/xmlbeansxx)
в нем есть:

$ pwd
/xmlbeansxx/xmlbeansxx-0.9.8/generator/src/main/java/pl/touk/xmlbeansxx
[xmlbeansxx]$ ls -la
итого 128
drwxrwxr-x 2 4096 Май 11 19:21 .
drwxrwxr-x 3 4096 Сен 25  2008 ..
-rw-r--r-- 1 69755 Сен 25  2008 ClassGen.java
-rw-r--r-- 1 2143 Сен 25  2008 Graph.java
-rw-r--r-- 1 1961 Сен 25  2008 Input.java
-rw-r--r-- 1 1607 Май 11 19:41 MyXmlErrorPrinter.java
-rw-r--r-- 1 3287 Сен 25  2008 Output.java
-rw-r--r-- 1 10455 Май 12 14:16 TSLoader.java
-rw-r--r-- 1 758 Сен 25  2008 TypeTraversor.java
-rw-r--r-- 1 800 Сен 25  2008 Utils.java
-rw-r--r-- 1 3858 Май 12 13:53 Validator.java
$pwd /xmlbeansxx/xmlbeansxx-0.9.8/generator
CMakeLists.txt  Makefile  Makefile.am  Makefile.in  pom.xml
$cat CMakeLists.txt
SET(GEN_UNIX_BIN_LINKS scompxx xmlbeansxx-geninclude xmlbeansxx-gen xmlbeansxx-split)
SET(GEN_BINFILES 
        ${GENDIR}/bin/acx_pthread.m4
        ${GENDIR}/bin/scompxx
        ${GENDIR}/bin/xmlbeansxx-geninclude
        ${GENDIR}/bin/xmlvalidator
        ${GENDIR}/bin/xmlbeansxx-gen
        ${GENDIR}/bin/xmlbeansxx-genbuiltin
        ${GENDIR}/bin/xmlbeansxx-split
        ${GENDIR}/bin/xmlbeansxx-gen.bat
        ${GENDIR}/bin/xmlbeansxx-genbuiltin.bat
)
SET(GEN_LIBFILES
        ${GENDIR}/lib/commons-logging-1.1.jar
        ${GENDIR}/lib/xbean-1.0.4.jar
        ${GENDIR}/lib/log4j-1.2.12.jar
)
SET(GEN_JAR
        ${GENDIR}/xmlbeansxx-gen.jar
)


ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/pom.xml
        COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/pom.xml ${CMAKE_CURRENT_BINARY_DIR}/
)

ADD_CUSTOM_COMMAND(OUTPUT ${GEN_BINFILES} ${GEN_LIBFILES} ${GEN_JAR}
        COMMAND ${MVN_PROG} -o -Dbase=${CMAKE_CURRENT_SOURCE_DIR} -Prelease package
        MAIN_DEPENDENCY ${CMAKE_CURRENT_BINARY_DIR}/pom.xml
        DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/pom.xml
)

ADD_CUSTOM_TARGET(generator
        DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/pom.xml ${GEN_BINFILES} ${GEN_LIBFILES} ${GEN_JAR} 
)


INSTALL(FILES ${GEN_BINFILES} 
        DESTINATION share/xmlbeansxx/bin
        PERMISSIONS     OWNER_EXECUTE   OWNER_WRITE     OWNER_READ
                        GROUP_EXECUTE                   GROUP_READ
                        WORLD_EXECUTE                   WORLD_READ
)
INSTALL(FILES ${GEN_LIBFILES}
        DESTINATION share/xmlbeansxx/lib
)

INSTALL(FILES ${GEN_JAR}
        DESTINATION share/xmlbeansxx
)
$cat Makefile.am
EXTRA_DIST = CMakeLists.txt

all-local: stamp-build 

stamp-build: $(shell find . -regex '\./\(src\|pom\.xml\).*' -not -regex '.*/\..*' | grep -v stamp)
        if [ "x`readlink -f ${srcdir}`" != "x`readlink -f .`" ]; then cp ${srcdir}/pom.xml . ; fi
        ${MVN} -U -Dbase=${srcdir} -Prelease package 
        touch stamp-build

clean-local:
        ${MVN} clean
        rm -f stamp-build
        if [ "x`readlink -f ${srcdir}`" != "x`readlink -f .`" ]; then rm -f pom.xml; true ; fi 

install-data-local:
        $(mkinstalldirs) $(DESTDIR)$(datadir)/xmlbeansxx
        $(mkinstalldirs) $(DESTDIR)$(bindir)
        cp -r target/xmlbeansxx-gen/* ${DESTDIR}${datadir}/xmlbeansxx
        ln -fs ${datadir}/xmlbeansxx/bin/xmlbeansxx-gen ${DESTDIR}${bindir}/xmlbeansxx-gen
        ln -fs ${datadir}/xmlbeansxx/bin/scompxx ${DESTDIR}${bindir}/scompxx
        ln -fs ${datadir}/xmlbeansxx/bin/xmlbeansxx-split ${DESTDIR}${bindir}/xmlbeansxx-split
        ln -fs ${datadir}/xmlbeansxx/bin/xmlbeansxx-geninclude ${DESTDIR}${bindir}/xmlbeansxx-geninclude

uninstall-local:
        rm -fr ${DESTDIR}${datadir}/xmlbeansxx
        rm -f ${DESTDIR}${bindir}/xmlbeansxx-gen
        rm -f ${DESTDIR}${bindir}/scompxx
        rm -f ${DESTDIR}${bindir}/xmlbeansxx-split
        rm -f ${DESTDIR}${bindir}/xmlbeansxx-geninclude

dist-hook:
        for file in `find . -regex '\./\(src\|pom\.xml\).*' -not -regex '.*/\..*'`; do \
                if [ -d $$file ]; then \
                        mkdir $(distdir)/$$file; \
                else \
                        cp -dP $$file $(distdir)/$$file; \
                fi; \
        done
После сборки получится
[generator]$ ls target/xmlbeansxx-gen.jar
generator]$ cat target/xmlbeansxx-gen/bin/xmlvalidator 
#!/bin/bash
usage="\
Validates xml given xsds

Usage: $0 file.xml [file1.xsd file2.xsd ... ]"

basefile=`readlink -f $0`

if test $# -eq 0; then
  echo "$usage"; exit 1
fi

java -jar `dirname ${basefile}`/../xmlbeansxx-gen.jar pl.touk.xmlbeansxx.Validator $@
[generator]$
но когда вызываешь
[bin]$ ./xmlvalidator RB.xml RB.xsd 
java.io.FileNotFoundException: pl.touk.xmlbeansxx.Validator (No such file or directory)
Он не находит pl.touk.xmlbeansxx.Validator но в xmlbeansxx-gen.jar есть Validator.class.

Вопрос как правильно вызвать main из Validator.java который входит в xmlbeansxx-gen.jar.

Заранее огромное спасибо

> Он не находит pl.touk.xmlbeansxx.Validator но в xmlbeansxx-gen.jar есть Validator.class.

А причём тут Validator.class? Он ищёт другой файл, путь к которому прописан в твоём скрипте как параметр xmlbeansxx-gen.jar

bbk123 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.