Как использовать файлы JAR без информации о пакете? - PullRequest
5 голосов
/ 23 февраля 2010

У меня есть банка под названием "MyTools".Баночка находится в папке c: \ data.Я создал новый файл в той же папке с именем «UseTools.java».Теперь я хотел бы использовать некоторые классы из MyTools.jar в моем UseTools.java.Я попытался это, но это не похоже на работу:

import MyTools.*;    
public class UseTools
{
  public static void main(String[] args) 
  {
    MyTools.SomeClass foo = new SomeClass();
    SomeClass.doSomething();
  }
}

Я попытался скомпилировать это с:

javac -cp . UseTools.java

и получил это сообщение об ошибке:

UseTools.java:1: package MyTools does not exist
import MyTools.*;
^
UseTools.java:7: package MyTools does not exist
        MyTools.SomeClass foo = new SomeClass()
                                     ^
2 errors

Я не установил имя пакета ни в одном классе.

Нужно ли устанавливать имя пакета в моих jar-классах?

Ответы [ 3 ]

4 голосов
/ 08 октября 2014

Чтобы упомянуть кое-что, что больше относится к названию вопроса: В Java вы не можете получить доступ к классам в пакете по умолчанию из кода в именованном пакете.

Это означает, что если классы в вашем jar-файле не принадлежат явно ни к одному пакету, а внутри jar-файла ваши файлы находятся непосредственно в корневой папке без подпапок, они находятся в пакете по умолчанию. Это не очень тщательно продумано и не имеет модульности, а также расширяемости, но технически исправно. Затем вы можете использовать эти классы только из кода, который также находится в пакете по умолчанию. Но это не обязательно означает, что он должен быть в одной банке. Если у вас несколько папок src или class, все они могут содержать классы в пакете по умолчанию, которые могут взаимодействовать. Организация в JAR-файлах и структура пакета в вашем проекте не зависят друг от друга.

Однако я настоятельно рекомендую вам использовать явную информацию о пакете.

1 голос
/ 23 февраля 2010

В вашем MyTools.jar должен быть пакет с именем MyTools. И перед компиляцией вы должны добавить jar в путь к классам.

0 голосов
/ 23 февраля 2010

Вам нужно добавить -cp file.jar вместо -cp.

Последний подберет только файлы .class. Кстати: почему бы не использовать IDE, как NetBeans, Eclipse или IntelliJ?

...