Я пытаюсь использовать отражение Java для чтения файлов классов и вывода его содержимого. Вот мой код Reflect.java файла, который бросает ошибку:ClassNotFoundException при использовании Class.forName()
String className = classNames.get(classNum).replace(".class", "");
String packageAndClassName = packageName + "." + className;
System.out.println(packageAndClassName);
try{
Class<?> c = Class.forName(packageAndClassName);
Мою команду, чтобы прочитать содержимое из пакета выглядит как этот
java -classpath . reflect.Reflect package /u/username/Desktop/Experiment/others/package/
Здесь, Arg [0] = пакет и аги [1] =/и/имя пользователя/Desktop/Эксперимент/другие/пакет/
Мой путь к классам выглядит так:
/u/username/Desktop/Experiment/reflect/:/u/username/Desktop/Experiment/others/package/
«дру ers "содержит пакет. Я понятия не имею, что я делаю неправильно. Я искал много ответов, и они включают в себя ввод всего имени класса Reflect, который я делаю в своей команде. Какие-нибудь идеи относительно того, что мне не хватает?
Как установить 'packageName' в коде? – Timo
Nvm, я получаю имя пакета из аргументов, переданных в main(). поэтому args [0] - это имя пакета и args [1] - абсолютный путь к имени пакета. – user3196429
Вы заменили косые черты '/' на периоды? Пакет java находится в форме 'com.example.package' Итак, если' others' - ваша папка src, это будет 'other.package.YourClass' – Tgsmith61591