Включая банки в 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;