Использование нескольких .jar с javac - PullRequest
5 голосов
/ 27 января 2010

простите мою терминологию. Я пытаюсь использовать три jar-файла с java-программой для моего класса CS. Первый - это funjava, упрощенный язык Java, а остальные - определения классов цвета и геометрии. Вот мой код и что происходит, когда я пытаюсь его запустить.

import colors.*;

class Canvas{

 public static void main(String [] args){
  System.out.println("test123"); 

  Circle cr1 = new Circle( new Posn(1,2), 5, "blue");
  Circle cr2 = new Circle( new Posn(5,4), 3, "red");
 }

}

class  Circle{

 Posn center;
 int rad;
 String color;

 Circle(Posn p, int r, String c){
  this.center = p;
  this.rad = r;
  this.color = c;  
 }

}

class Posn{

 int x;
 int y;

 Posn(int x, int y){
  this.x = x;
  this.y = y;  
 }

}

Последний аргумент Circle должен быть цветом из colors.jar, а не строкой.

niko@niko-laptop:~/Classes/Fundies2$ javac -cp *.jar Canvas.java 
error: Class names, 'funjava.jar,geometry.jar', are only accepted if annotation processing is explicitly requested
1 error
niko@niko-laptop:~/Classes/Fundies2$ ls
1-20-10.java  1-21-10.java  Book.class  Canvas.class  Circle.java  Examples.class  funjava.jar   hw1~        Main.java    OceanWorld.java
1-21-10       Author.class  book.java   Canvas.java   colors.jar   Examples.java   geometry.jar  Ishape      OceanWorld   Posn.class
1-21-10~      Author.java   Book.java   Circle.class  Combo.java   Fundies2.txt    hw1           Main.class  OceanWorld~  Rect.java

Так как же явно запросить обработку аннотации? Спасибо.

Ответы [ 2 ]

21 голосов
/ 27 января 2010

В дополнение к ответу Ромен Мюллер :

Если вы хотите быстро использовать все файлы * .jar в текущем каталоге и используете JDK 6 или более позднюю версию, вы можете использовать одну звездочку. В Unix-оболочке (как в Linux) вам нужно экранировать звездочку:

javac -cp \* Canvas.java

Это работает и при запуске Java-приложения:

java -cp .:\* Canvas

Обратите внимание на .:, чтобы указать Java искать в текущем каталоге, а также файлы * .jar для поиска Canvas.class.

В Windows используйте точку с запятой (;) вместо двоеточия в качестве разделителя.

2 голосов
/ 27 января 2010

Насколько я знаю, опция -cp требует, чтобы classpath указывался как список мест, разделенных двоеточиями или точками с запятой, в большинстве ситуаций, а не как список с разделителями-запятыми, который, как кажется, создается вашей ОС при расширении *.jar.

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