2015-08-07 4 views
-2

У меня есть две папки a и b:Как импортировать пакет Java

  • в a У меня есть ClassA.java,
  • в b У меня есть ClassB.java.

Я хочу ClassB.java импорт ClassA.java. Как я мог это сделать?

Если я просто напишу import a.ClassA, я не могу его скомпилировать.

+0

Это хорошая идея поставить весь класс в одной папке, так что вы можете назвать это легко –

+1

Было бы неплохо, если бы вы предоставить код, который не компилируется. иначе мы можем только догадываться, что вы сделали неправильно. ;) – ChrisKo

+1

Опишите в 'ClassA', что он относится к пакету' a' (другими словами, он начинается с 'package a;')? – Pshemo

ответ

0

Основываясь на ваших комментариях, похоже, что вы добавили декларации пакетов в классах, как

package a; 
public class ClassA{ 
    //...  
} 

и на основе вашего вопроса вы утверждали, что вы также включили import a.ClassA в ClassB как

package b; 
import a.ClassA; 
public class ClassB{ 
    //...  
} 

Так скомпилировать ClassB из b директории, которую вы должны включить в локализации командном другие пакеты, которые вы собираетесь использовать, в этом случае локализация каталога, содержащего каталог a. Вы сделаете это, установив параметр -classpath (или короче -cp).

Так что, если вы находитесь в папке b вы можете сделать это с помощью

javac -cp .. ClassB.java 

где .. означает родительский каталог (один держит как a и b).

Для запуска кода вам также необходимо указать расположение каталога, в котором хранятся дополнительные пакеты, используемые вашим приложением. Таким образом, вы должны использовать

java -cp .. b.ClassB 
0

Возможно, вы забыли объявить пакет внутри классов без этой информации. Java не знает, что импортированные классы относятся к пакетам.

+0

@Downvoter вы можете дать основания для голосования вниз? – ChrisKo

+1

Я не голосующий, но если вы хотите спросить OP, сделайте это через комментарий, а не ответьте (даже если вы на правильном пути - ответы не должны быть догадками). – Pshemo

+1

Это правильный ответ. Убедитесь, что ChrisKo говорит, что вы включаете в верхнюю часть каждого файла «пакет a» в ClassA.java и «пакет b» в ClassB.java – Rai

0

Проверьте ваши классы выглядят как эти:

// ClassA.java 
package a;  

class ClassA { 
    ... 
}  

// ClassB.java  
package b; 

import a.ClassA;  

class ClassB { 
    ...  
} 

Ваша структура папок должна быть что-то вроде этого:

src  
-- src/a 
----- ClassA.java 
-- src/b  
---- ClassB.java 

Затем перейдите к ЦСИ папку и введите:

Javac ./a/ClassA.java ./b/ClassB.java 
+1

Вы в последней строке должны читать 'javac ./a/ClassA.java./B/ClassB.java', предполагая файловую систему Linux, такую ​​как my или' javac. \ A \ ClassA.java. \ B \ ClassB.java' для Windows или просто 'javac ./**/*. java' – Rai

+0

Да, вы правы. Благодаря! –

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