#java #compiler-errors
Вопрос:
Я исследовал много подобных вопросов, связанных с моей проблемой здесь, но ни один из них не смог помочь.
У меня есть 2 части исходного кода: Proj02.java и Proj02Runner.java. Proj02Runner.java. успешно компилируется, но компиляция Proj02.java выдает эту ошибку:
Proj02.java:11: error: cannot find symbol
System.out.println(Proj02Runner.run(randomNumber));
^
symbol: variable Proj02Runner
location: class Proj02
1 error
Я понимаю, что ошибка возникает из-за Proj02.java не могу найти Proj02Runner.java. Я просто не могу понять, как это исправить.
Когда программа запускается с использованием обоих источников, вывод должен быть таким:
128
Hello my name is xxx.
128
129
Я ожидаю, что цифры будут меняться каждый раз при запуске программы, но второе число всегда должно быть на единицу больше первого. Пожалуйста, обратите внимание, что мое задание состоит в том, что нам не разрешается изменять какой-либо код в Proj02.java. Мы должны выполнить эту задачу, только изменив Proj02Runner.java.
Вот мой код:
Proj02.java код
import java.util.Random;
import java.util.Date;
import java.lang.Math;
class Proj02{
public static void main(String[] args){
Random generator = new Random(new Date().getTime());
int rand = generator.nextInt();
int randomNumber = Math.abs((byte)rand);
System.out.println(randomNumber);
System.out.println(Proj02Runner.run(randomNumber));
}
}
Proj02Runner.java код
class Proj02Runner{
static int run(int valIn){
System.out.println(
"Hello my name is xxx.n");
byte myVar = (byte) valIn;
System.out.println(myVar);
myVar = --myVar;
return myVar;
}
}
Любая информация была бы весьма признательна.
Комментарии:
1. как вы пытаетесь скомпилировать/запустить эти файлы? Вы вручную запускаете javac для файлов или это делается в среде IDE или в инструменте сборки?
2. Я запускаю их вручную с помощью cmd, используя javac. Спасибо.
3. Покажите нам точные команды, которые вы используете.
4. Вам нужно будет скомпилировать их оба одновременно или добавить Proj02Runner в путь к классам javac при попытке скомпилировать Proj02. Самый простой способ-скомпилировать их оба одновременно-поместить их в один и тот же каталог, а затем скомпилировать *.java
5. Большинство людей переходят к системе сборки (gradle, maven, ivy и т. Д.) Или проекту IDE, Если они собираются делать что-то более сложное, чем один файл
Ответ №1:
Чтобы решить проблему, когда второе число выше первого. Просто измените myVar = --myVar;
на myVar = myVar;
Полный код выглядит следующим образом: `
public class Proj02 {
public static void main(String[] args){
Random generator = new Random(new Date().getTime());
int rand = generator.nextInt();
int randomNumber = Math.abs((byte)rand);
System.out.println(randomNumber);
System.out.println(Proj02Runner.run(randomNumber));
}
}
class Proj02Runner{
static int run(int valIn){
System.out.println(
"Hello my name is xxx.n");
byte myVar = (byte) valIn;
System.out.println(myVar);
myVar = myVar;
return myVar;
}
}
`
Это приведет к следующему примеру вывода:
67
Hello my name is xxx
67
68
Я надеюсь, что это поможет решить вашу проблему 🙂
Комментарии:
1. Я думаю, что вы отвечаете на следующий вопрос ОП 🙂 Вы могли бы включить командную строку компиляции (возможно
javac *.java
), чтобы завершить свой ответ2.Спасибо! Я собрал все вместе и подумал, что это сработало — я не получил никаких ошибок. Но когда я запустил его, я получил эту ошибку:
Proj02.java:11: error: cannot find symbol
System.out.println(Proj02Runner.run(randomNumber));
^
symbol: variable Proj02Runner
location: class Proj021 error
error: compilation failed
Ответ №2:
Ответ Эвана описывает, как изменить код; Вот что вы можете сделать, чтобы скомпилировать и запустить свой код из командной строки.
Во-первых, поместите два файла вместе в один каталог:
C:demo>реж. Том в накопителе C - Серийный номер тома ОС-C8EE-A280 Справочник по C:demo 06/10/2021 10:55 УТРА . 06/10/2021 10:55 УТРА .. 06/09/2021 04:02 367 Proj02.java 06/09/2021 04:02 215 Proj02Runner.java 2 Файла (файлов) 582 байта
Тогда беги javac *.java
C:demo>javac *.java C:demo>реж. Том в накопителе C - Серийный номер тома ОС-C8EE-A280 Справочник по C:demo 06/10/2021 10:55 УТРА . 06/10/2021 10:55 УТРА .. 06/10/2021 10:55 630 Proj02.class 06/09/2021 04:02 367 Proj02.java 06/10/2021 10:55 468 Proj02Runner.class 06/09/2021 04:02 215 Proj02Runner.java 4 Файла (ов) 1680 байт
Теперь, когда он скомпилирован, вы можете запустить код. Программы Java требуют, чтобы a public static void main(String[] args)
был доступен для выполнения, и этот метод Proj02
включен , так что это тот, который вы вызываете:
C:demo>java -cp . Проект 02 120 Здравствуйте, меня зовут ххх. 120 119 C:demo>
Это должно помочь тебе преодолеть трудности при выполнении этого задания. Я настоятельно рекомендую освоиться с одной из систем сборки (gradle, maven, ivy, ant и т. Д.) Или, по крайней мере, с проектом IDE, Потому что, когда вы начнете выполнять более сложную работу, вам захочется включить дополнительные библиотеки, и метод командной строки быстро станет неуправляемым.