Java | Classpath | Класс не найден - PullRequest
0 голосов
/ 13 апреля 2020
Вопрос:
  1. Я не могу выполнить классы, которые расширяют другие классы. Я считаю, что это связано с тем, как я объявляю путь к классу. Я выполняю ниже через терминал. Любое руководство было бы потрясающим. Спасибо!
Классы:
  1. Паукообразный -> Родитель
  2. Паук -> Подкласс паукообразного
  3. GardenSpider -> Подкласс паука
Каталог:

Весь код выполняется из родительского каталога (я вижу bin и sr c).

.
├── bin
│   ├── Arachnid.class
│   ├── GardenSpider.class
│   └── Spider.class
└── src
    ├── Arachnid.java
    ├── GardenSpider.java
    └── Spider.java
Классы: 1. Паукообразный
// Chapter 6 : 6

/*
This is a superclass
*/
public class Arachnid {
/*
 * Constructor
 */
public Arachnid () {
        System.out.printf("%s%n%n", "Executing Arachnid constructor");
}
public static void main(String[] args) {
        Arachnid a = new Arachnid(); // create Arachnid object
}
}

2. Паук
// Chapter 6 : 6

/*
* This is a subclass - inherits all protected and public members from parent (field, methods, and nested classed)
*/
public class Spider extends Arachnid{
  /*
   * Constructor
   */
   public Spider () {
    System.out.printf("%s%n%n", "Executing Spider constructor");
  }
  public static void main(String[] args) {
    Spider a = new Spider(); // create  spider object
  }
}

3. Сад Spider
// Chapter 6 : 6

/*
This is a subclass
*/
public class GardenSpider extends Spider{
  /*
   * Constructor
   */
  public GardenSpider () {
    System.out.printf("%s%n%n", "Executing GardenSpider constructor");
  }

  public static void main(String[] args) {
    GardenSpider gs = new GardenSpider(); // create garden spider object
  }
}

Компиляция классов
  1. javac -d bin src /*.java
Выполнение классов: 1. java -cp bin / Arachnid.class src /Arachnid.java

Executing Arachnid constructor

2. java -cp bin / Arachnid.class: bin / Spider.class src / Spider. java
src/Spider.java:7: error: cannot find symbol
public class Spider extends Arachnid{
                            ^
  symbol: class Arachnid
1 error
error: compilation failed
3. java -cp bin / Arachnid.class: bin / Spider.class: bin / GardenSpider.class src / GardenSpider. java
src/GardenSpider.java:6: error: cannot find symbol
public class GardenSpider extends Spider{
                                ^
symbol: class Spider
1 error
error: compilation failed
Ссылки:
  1. Что означает «Не удалось найти или загрузить основной класс» ?
Примечания:
  1. bin/* сокращенная опция для использования при объявлении путей к классам
  2. Разделитель классов:
  3. FQN должен использоваться для передачи classpath
  4. Вам не нужно. java при выполнении (если вы делаете это правильно?)
FQN:
  • / Users / hw_2 / src / *. classes
  • / Usershw_2 / src /*.java
FQN Пример:
  1. java -cp /Users/hw/hw_2/bin/Arachnid.class src / Arachnid. java

1 Ответ

1 голос
/ 13 апреля 2020

«Не удалось найти или загрузить основной класс» означает, что класс не может быть найден или что у класса не было метода с сигнатурой public static void main(String[]).

Я думаю, что src/Arachnid.java неверно в оба случая. Вы не выполняете исходный файл. java, вы запускаете файл .class. Которые в вашем случае находятся в каталоге /bin. Попробуйте что-то вроде:

java -cp bin/Arachnid.class:bin/Spider.class Spider

...