Я искал, как получить доступ к закрытому полю класса из другого класса и обнаружил, что это можно сделать с помощью reflection.Field, как в следующем коде, но когда я пытаюсь выполнить код, я получаю сообщение об ошибке: Error: Could not find or load main class com.example.Test
Ошибка: не удалось найти или загрузить основной класс com.example.Test
Почему это происходит?
Test.java
package com.example;
import java.lang.reflect.*;
class Test
{
public static void main(String[] args)
// Just for the ease of a throwaway test. Don't
// do this normally!
throws Exception
{
Other t = new Other();
t.setStr("hi");
Field field = Other.class.getDeclaredField("str");
field.setAccessible(true);
Object value = field.get(t);
System.out.println(value);
}
}
Other.java
package com.example;
class Other
{
private String str;
public void setStr(String value)
{
str = value;
}
}
Как вы пытаетесь запустить класс? –
Я пробовал 'java Test' в cmd, а также запускал его в netbeans. @ BobbyStJacques – po123
'java Test' не работал бы так, как вам нужно было бы указать полное имя класса (например,' java com.example.Test') , Однако вывод вашего примера, похоже, указывает на то, что вы указали полное имя класса (потому что в нем указано полное имя). Мое лучшее предположение заключается в том, что вы пытаетесь запустить из произвольного места, не настроив свой путь Java classpath соответствующим образом. Ваш classpath говорит Java, где искать ваши классы. https://docs.oracle.com/javase/tutorial/essential/environment/paths.html –