2010-01-19 2 views
116

пытается запустить эту программу. Я думаю, что для настройки всего веб-сервиса мне нужно запустить apt. (Хотя использование javac у меня такая же проблема). Я думаю, что я получаю ошибки компиляции. (Показано внизу).Включая банки в classpath на командной строке (javac или apt)

Я думаю, что мне нужно сделать, это включить эту банку в мой путь класса: jsr181-api.jar (source). Есть ли простой временный способ сделать это (на солярии)? Я не хочу добавлять его в файл bash_rc (он есть навсегда). Я также знаю, что есть какой-то способ сделать это, используя текстовый файл манифеста, но это казалось сложным, поэтому я еще не изучил его. Могу ли я просто сделать что-то вроде:

javac HelloImp <listOfJars> 

или

ant HelloImp <listOfJars> 

Код:

package server; 

import javax.jws.WebService; 

@WebService 
public class HelloImpl { 

    /** 
    * @param name 
    * @return Say hello to the person. 
    */ 
    public String sayHello(String name) { 
    return "Hello, " + name + "!"; 
    } 
} 

ошибки компиляции:

HelloImpl.java:3: package javax.jws does not exist 
import javax.jws.WebService; 
       ^
HelloImpl.java:5: cannot find symbol 
symbol: class WebService 
@WebService 
^ 
2 errors 

Обновление: Прохладный, который завернут, но он все еще не совсем работает. Я создал new question, чтобы держать вещи красиво и организовано:

ответ

132

Попробуйте следующее:

java -cp jar1:jar2:jar3:dir1:. HelloWorld 

по умолчанию путь к классам (если есть переменная CLASSPATH среды) является текущим каталогом, так что если вы переопределить его, сделать убедитесь, что вы добавили текущий каталог (.) в путь к классам, как я это сделал.

+0

https://github.com/SpotterRF/json-examples/tree/master/java/jackson имеет хороший пример в Makefile – CoolAJ86

+0

@ CoolAJ86 Ссылка, кажется, пошли мертвым –

+1

Обновлено: https://github.com/coolaj86/json-examples/tree/master/java/jackson – CoolAJ86

9

Используйте переключатель -cp или -classpath.

$ java -help 
Usage: java [-options] class [args...] 
      (to execute a class) 
    or java [-options] -jar jarfile [args...] 
      (to execute a jar file) 

where options include: 
... 
    -cp <class search path of directories and zip/jar files> 
    -classpath <class search path of directories and zip/jar files> 
        A ; separated list of directories, JAR archives, 
        and ZIP archives to search for class files. 

(Обратите внимание, что разделитель, используемый для разделения записей на пути к классам отличается от операционки, на моей машине Windows, это ;, в * NIX это обычно :.)

3

Использование:

apt HelloImpl.java -classpath /sac/tools/thirdparty/jaxws-ri/jaxws-ri-2.1.4/lib/jsr181-api.jar:. 

работает, но это дает мне другую ошибку, см new question

28

В окнах:

java -cp C:/.../jardir1/*;C:/.../jardir2/* class_with_main_method 

убедитесь, что класс с основной функцией является одним из включенных в банки

1

Javac HelloWorld.java -classpath ./javax.jar, предполагая, что javax находится в текущей папке и компилировать цель является «HelloWorld.java», и вы можете скомпилировать без основного метода

0

Примечание для пользователей Windows, баночки должны быть разделены ; и не :.

, например: javac -cp external_libs\lib1.jar;other\lib2.jar;

Смежные вопросы