Включая банки в classpath в командной строке (javac или apt)

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

Я думаю, что мне нужно сделать этот банку в моем классе: jsr181-api.jar (источник). Есть ли простой временный способ сделать это (на солярии)? Я не хочу добавлять его в файл 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

Обновление: Прохладный, который завернут, но он все еще не работает. Я создал новый новый вопрос, чтобы все было хорошо и организовано:

Ответ 1

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

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

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

Ответ 2

В окнах:

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

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

Ответ 3

Используйте переключатель -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 обычно :.)

Ответ 4

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

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

работает, но это дает мне еще одну ошибку, см. новый вопрос

Ответ 5

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

Ответ 6

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

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