Почему я не могу использовать один и тот же путь класса для моей команды компиляции по сравнению с моей командой Run?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Почему я не могу использовать один и тот же путь класса для моей команды компиляции по сравнению с моей командой Run?

Сообщение Anonymous »

Я использовал JEP 458 для большого эффекта, пока сегодня не столкнулся с странной ситуацией. < /p>
Вот какая -то соответствующая информация.

Код: Выделить всё

$ java --version
openjdk 24-ea 2025-03-18
OpenJDK Runtime Environment (build 24-ea+25-3155)
OpenJDK 64-Bit Server VM (build 24-ea+25-3155, mixed mode, sharing)

$ javac --version
javac 24-ea
< /code>
И вот моя иерархия каталогов. < /p>
.
├───aa
│   └───a
│           abc.java
│
└───b
xyz.java
< /code>
Вот файлы.$ cat a/abc.java

package a;

import b.xyz;

public class abc
{

public static void main(final String[] args)
{

final xyz blah = new xyz();

}

}

< /code>
xyz.java
$ cat ../b/xyz.java

package b;

public class xyz {}

< /code>
И, наконец, вот где я есть. < /p>
$ pwd
/aa
ОК, так что, в то время как в/aa я хотел запустить основной метод /AA/A/abc.java . Теперь Abc.java имеет импорт для xyz.java , который находится в пакете b .
Этот пакет b не является В настоящее время доступен из пути класса, поэтому я добавил опцию пути класса в свою команду. < /p>

Код: Выделить всё

$ java --class-path "./../" a/abc.java
Опять же, я нахожусь в каталоге/aa , что означает, что он будет повышать уровень, а затем быть в корне для b , чтобы быть обнаруженным, чтобы Насколько я понимаю. < /p>
Но когда я запускаю команду, вместо этого я получил эту ошибку.

Код: Выделить всё

$ java --class-path "./../" a/abc.java
a\abc.java:4: error: package b does not exist
import b.xyz;
^
a\abc.java:12: error: cannot find symbol
final xyz blah = new xyz();
^
symbol:   class xyz
location: class abc
a\abc.java:12: error: cannot find symbol
final xyz blah = new xyz();
^
symbol:   class xyz
location: class abc
3 errors
error: compilation failed
ОК, поэтому я попытался запустить Javac вместо Java .

Код: Выделить всё

$ javac --class-path "./../" a/abc.java
< /code>
завершен без ошибок. И вот мой новый вывод дерева. < /P>
.
├───aa
│   └───a
│           abc.class
│           abc.java
│
└───b
xyz.class
xyz.java
Итак, javac в порядке с этим, но java нет.
Я делаю что -то не так? Я попробовал несколько вариантов параметров пути класса, все безрезультатно. Или это просто не поддерживается функциональность? и/b в одном каталоге уровня, тогда все это работает.

Подробнее здесь: https://stackoverflow.com/questions/793 ... un-command
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»