запустить файл jar (сгенерированный ant) ​​в командной строке - PullRequest
1 голос
/ 21 марта 2012

У меня есть файл build.xml, который отлично работает.Проблема в том, что сгенерированный файл jar, и мне нужно запустить его без 'ant run'

Как мне запустить файл jar?работа с

java -jar Main.jar main.Main 

дает мне:

Exception in thread "main" java.lang.NoClassDefFoundError: org/neo4j/graphdb/GraphDatabaseService

Вот как я создаю файл jar (build.xml):

<target name="jar" depends="compile">
<mkdir dir="${jar.dir}"/>
    <jar destfile= "${jar.dir}/${ant.project.name}.jar" basedir="${build.dir}">
        <manifest>
            <attribute name="Main-Class" value="${main-class}"/>
        </manifest>
    </jar>
</target>

<target name="compile">
    <mkdir dir="${build.dir}"/>
    <mkdir dir="${build.dir}/${conf.dir}"/>
    <javac srcdir="${src.dir}" destdir="${build.dir}" classpathref="classpath" includeantruntime="false"/>
    <copy todir="${build.dir}/${conf.dir}">
        <fileset dir="${conf.dir}"/>
    </copy>
</target>

<target name="run" >
    <java fork="true" classname="${main-class}">
        <classpath>
            <path refid="classpath"/>
            <path location="${jar.dir}/${ant.project.name}.jar"/>
        </classpath>
    </java>
</target>

<path id="classpath">
    <fileset dir="${lib.dir}" includes="**/*.jar"/>
</path>

"Задача ant run "отлично работает с этим jar.Как я могу запустить этот проект без муравья?

Ответы [ 4 ]

5 голосов
/ 21 марта 2012

Используйте java -cp Main.jar main.Main, -jar для связанных банок с манифестом, в котором указано, какой класс должен использоваться в качестве основного. То, что вы делаете с -cp (и внутри вашего файла сборки ant), просто помещаете его в основной путь: вы явно указываете main.Main в качестве основного класса, а не в манифесте.

Вы должны также поместить другие банки в путь к классам (например, -cp lib/example1.jar:lib/example2.jar:Main.jar). В зависимости от того, что соответствует **/*.jar, их может быть несколько.

0 голосов
/ 21 марта 2012

Вам необходимо добавить -classpath xxx.jar в командной строке

0 голосов
/ 21 марта 2012

Файлы neo4j.jars отсутствуют во время выполнения.Добавьте параметр classpath, например:

java -cp yourLibDir -jar Main.jar
0 голосов
/ 21 марта 2012

Вы пробовали:

java -jar Main.jar

Проверяли ли вы, что Main.jar действительно включает ваш org/neo4j/graphdb/GraphDatabaseService класс?

...