Проверьте переменные среды после того, как убедитесь, что у вас установлен Android SDK. Запустите команду ionic cordova requirements
Установите их, перезагрузите компьютер и попробуйте собрать заново.
С каталогом в пути к классам из класса, загруженного тем же загрузчиком классов, вы должны иметь возможность использовать любое из:
// From ClassLoader, all paths are "absolute" already - there's no context
// from which they could be relative. Therefore you don't need a leading slash.
InputStream in = this.getClass().getClassLoader()
.getResourceAsStream("SomeTextFile.txt");
// From Class, the path is relative to the package of the class unless
// you include a leading slash, so if you don't want to use the current
// package, include a slash like this:
InputStream in = this.getClass().getResourceAsStream("/SomeTextFile.txt");
Если они не работают, это означает, что неверно.
Так, например, возьмите этот код:
package dummy;
import java.io.*;
public class Test
{
public static void main(String[] args)
{
InputStream stream = Test.class.getResourceAsStream("/SomeTextFile.txt");
System.out.println(stream != null);
stream = Test.class.getClassLoader().getResourceAsStream("SomeTextFile.txt");
System.out.println(stream != null);
}
}
И эту структуру каталогов:
code
dummy
Test.class
txt
SomeTextFile.txt
И затем (используя разделитель путей Unix, поскольку я нахожусь в системе Linux):
java -classpath code:txt dummy.Test
Результаты:
true
true
Мой ответ не точно, что спрашивают в вопросе. Скорее я даю решение точно, как легко мы можем считать файл в JAVA-приложение от нашего пути к классу проекта.
, Например, предполагают название файла конфигурации , example.xml расположен в пути как below:-
com.myproject.config.dev
, и наш исполнимый файл класса Java находится в ниже path:-
com.myproject.server.main
, теперь просто регистрируются в обоих вышеупомянутый путь, который является ближайшим общим каталогом/папкой от того, где можно получить доступ и dev и основной каталог/папка (com.myproject.server.main - где наш application’s исполнимый класс Java существуется), †“, Мы видим, что это папка/каталог myproject , которая является ближайшим общим каталогом/папкой от того, где мы можем получить доступ к нашему файлу example.xml. Поэтому от исполняемого файла Java класс находится в папке/каталоге основной , мы должны возвратиться два шага как [1 114]../.. / для доступа myproject. Теперь после этого, посмотрите, как мы можем считать file:-
package com.myproject.server.main;
class Example {
File xmlFile;
public Example(){
String filePath = this.getClass().getResource("../../config/dev/example.xml").getPath();
this.xmlFile = new File(filePath);
}
public File getXMLFile() {
return this.xmlFile;
}
public static void main(String args[]){
Example ex = new Example();
File xmlFile = ex.getXMLFile();
}
}
вы должны поместить свою «системную переменную» в путь к классам java.
Вы говорите: «Я пытаюсь прочитать текстовый файл, заданный в системной переменной CLASSPATH». Я предполагаю, что это в Windows, и вы используете этот уродливый диалог для редактирования «Системных переменных».
Теперь вы запускаете свою Java-программу в консоли. И это не работает: консоль получает копию значений системных переменных один раз при запуске . Это означает, что любые изменения в диалоговом окне впоследствии не имеют никакого эффекта.
Существуют следующие решения:
Запускать новую консоль после каждого изменения
Используйте set CLASSPATH =. ..
в консоли, чтобы установить копию переменной в консоли, и когда ваш код будет работать, вставьте последнее значение в диалоговое окно переменной.
Поместите вызов Java в файл .BAT
и дважды щелкните его . Это будет создавать новую консоль каждый раз (таким образом, копируя текущее значение системной переменной).
ВНИМАНИЕ: если у вас также есть пользовательская переменная CLASSPATH
, то она затеняет вашу системную переменную. Вот почему обычно лучше поместить вызов вашей Java-программы в файл .BAT
и установить там путь к классам (используя set CLASSPATH =
), а не полагаться на глобальный системная или пользовательская переменная.
Это также гарантирует, что на вашем компьютере может работать более одной программы Java, потому что у них обязательно будут разные пути к классам.
Пожалуйста, попробуйте
InputStream in = this.getClass().getResourceAsStream("/SomeTextFile.txt");
Ваши попытки не сработали, потому что только загрузчик классов для ваших классов может загружаться из пути к классам. Вы использовали загрузчик классов для самой системы Java.
При использовании Spring Framework (либо в виде набора утилит , либо контейнера - вам не нужно использовать последнюю функцию) вы можете легко используйте абстракцию Resource .
Resource resource = new ClassPathResource("com/example/Foo.class");
Через интерфейс Resource вы можете получить доступ к ресурсу как InputStream , URL , URI или Файл . Изменение типа ресурса, например, ресурса файловой системы, - это простой вопрос изменения экземпляра.