Я пытаюсь понять этот демонстрационный пример. Дается только класс HelloWorld
, поэтому я должен сам реализовать класс Input
и Output
.
я понимаю сообщение об ошибке: java не может найти файлы Input.java
и Output.java
при их импорте. поэтому файл HelloWorld.class
построен неправильно. Но я не понимаю, почему это происходит. Я думаю, я сделал небольшую ошибку в структуре каталогов файловой системы или импорта, но я не могу ее обнаружить. Где моя ошибка?
Я также прочитал 2 и 3, но это тоже не работает.
HelloWorld.java
package org.fedoraproject.helloworld;
import org.fedoraproject.helloworld.input.Input;
import org.fedoraproject.helloworld.output.Output;
public class HelloWorld {
public static void main(String[] args) {
System.out.print("What is your name?: ");
String reply = Input.getInput();
Output.output(reply);
}
}
Input.java
package org.fedoraproject.helloworld;
import java.util.Scanner;
public class Input {
public static String getInput() {
Scanner scanner = new Scanner(System.in);
String returnVal = scanner.next();
scanner.close();
return returnVal;
}
}
Output.java
package org.fedoraproject.helloworld;
public class Output {
public static void output(String s) {
System.out.println(s);
}
}
$ find
.
./src
./src/org
./src/org/fedoraproject
./src/org/fedoraproject/helloworld
./src/org/fedoraproject/helloworld/output
./src/org/fedoraproject/helloworld/output/Output.class
./src/org/fedoraproject/helloworld/output/Output.java
./src/org/fedoraproject/helloworld/input
./src/org/fedoraproject/helloworld/input/Input.class
./src/org/fedoraproject/helloworld/input/Input.java
./src/org/fedoraproject/helloworld/HelloWorld.class
./src/org/fedoraproject/helloworld/HelloWorld.java
$ java -cp src/org/fedoraproject/helloworld/input/Input.class:src/org/fedoraproject/helloworld/output/Output.class src/org/fedoraproject/helloworld/HelloWorld.class
Error: Could not find or load main class src.org.fedoraproject.helloworld.HelloWorld.class
$ javac -cp src/ src/org/fedoraproject/helloworld/HelloWorld.java
src/org/fedoraproject/helloworld/HelloWorld.java:3: error: cannot access Input
import org.fedoraproject.helloworld.input.Input;
^
bad source file: src/org/fedoraproject/helloworld/input/Input.java
file does not contain class org.fedoraproject.helloworld.input.Input
Please remove or make sure it appears in the correct subdirectory of the sourcepath.
Обновление:
После изменения объявлений пакетов Input.java
и Output.java
на:
package org.fedoraproject.helloworld.input;
package org.fedoraproject.helloworld.output;
который производит (применяя предложения в ответах):
$ javac -cp src org/fedoraproject/helloworld/HelloWorld.java
org/fedoraproject/helloworld/HelloWorld.java:3: error: package org.fedoraproject.helloworld.input does not exist
import org.fedoraproject.helloworld.input.Input;
^
org/fedoraproject/helloworld/HelloWorld.java:4: error: package org.fedoraproject.helloworld.output does not exist
import org.fedoraproject.helloworld.output.Output;
^
org/fedoraproject/helloworld/HelloWorld.java:9: error: cannot find symbol
String reply = Input.getInput();
^
symbol: variable Input
location: class HelloWorld
org/fedoraproject/helloworld/HelloWorld.java:10: error: cannot find symbol
Output.output(reply);
^
symbol: variable Output
location: class HelloWorld
4 errors
Последнее обновление Теперь это работает, после выполнения этих команд в родительской папке `src':
$ find -type f
./src/org/fedoraproject/helloworld/output/Output.java
./src/org/fedoraproject/helloworld/output/Output.class
./src/org/fedoraproject/helloworld/input/Input.class
./src/org/fedoraproject/helloworld/input/Input.java
./src/org/fedoraproject/helloworld/HelloWorld.java
./src/org/fedoraproject/helloworld/HelloWorld.class
~/java-example-project
$ javac -cp src/ src/org/fedoraproject/helloworld/HelloWorld.java
~/java-example-project
$ java -cp src org.fedoraproject.helloworld.HelloWorld
What is your name?: toogley
toogley
javac -cp src/ src/org/fedoraproject/helloworld/HelloWorld.java
иjava -cp src src/org/fedoraproject/helloworld/HelloWorl
я получаю это:Error: Could not find or load main class src.org.fedoraproject.helloworld.HelloWorld
26.06.2016./src
в качестве пути к классам или, может быть,src/
? Я обычно делаю это на окнах. Но будьте уверены, для пути к классам следует установить значение по умолчанию. пакет, то есть корень. 26.06.2016src/
не должно стоять перед путем к основному классу. Извини. 26.06.2016java
неверен - он должен бытьjava -cp src org.fedoraproject.helloworld.HelloWorld
. Вы указываете имя класса, а не его расположение в файловой системе. 26.06.2016/
вместо.
тоже работает. (Я просто использовал слово «путь», потому что оно похоже на него) 26.06.2016.
, но я думал, что/
был стандартным/оригинальным способом. Хорошо знать :) 26.06.2016