Включение jar в classpath в командной строке (javac или apt) - PullRequest
129 голосов
/ 19 января 2010

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

Я думаю, мне нужно включить этот jar в мой путь к классу: 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

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

Ответы [ 6 ]

151 голосов
/ 19 января 2010

Попробуйте выполнить следующее:

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

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

31 голосов
/ 19 января 2010

В окнах:

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

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

13 голосов
/ 27 апреля 2017

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

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

11 голосов
/ 19 января 2010

Используйте переключатель -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 голосов
/ 19 января 2010

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

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

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

2 голосов
/ 15 января 2017

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...