#java
#java
Вопрос:
У меня есть следующий метод, который раньше работал нормально :
private static boolean exec(String command,boolean printResults,boolean wait)
{
String Command_List[],Command_Array[]=command.split(" ");
Process p;
Result_String="";
Result_String_With_System_Prompt="";
try
{
Command_List=new String[Command_Array.length 2];
Command_List[0]="cmd";
Command_List[1]="/c";
for (int i=0;i<Command_Array.length;i ) Command_List[i 2]=Command_Array[i];
System.out.println("Command_List = " Arrays.toString(Command_List));
ProcessBuilder pb=new ProcessBuilder(Command_List); // new ProcessBuilder("cmd","/c","java","-version");
pb.redirectErrorStream(true);
p=pb.start();
// Print the output. Since we read until there is no more input,this causes us to wait until the process is completed
if (printResults)
{
BufferedInputStream buffer=new BufferedInputStream(p.getInputStream());
BufferedReader command_Result=new BufferedReader(new InputStreamReader(buffer));
while ((Last_String=command_Result.readLine()) != null)
{
System.out.println(Last_String);
Result_String =Last_String "n";
Result_String_With_System_Prompt =Last_String "n" System_Prompt;
}
command_Result.close();
}
}
catch (Exception e) { ... }
}
Он работал нормально до сегодняшнего утра, я увидел диалоговое окно от Oracle, в котором говорилось, что Oracle JDK больше не является бесплатным… спросив меня, хочу ли я обновить или нет, я сказал «нет», и он удалил мои старые версии Java [JRE], затем я сам установил бесплатный OpenJDK 12, и я проверил, открыв окно командной строки и набрав «java -version», я получил следующий вывод :
C:UsersUSER>java -version
openjdk version "12" 2019-03-19
OpenJDK Runtime Environment AdoptOpenJDK (build 12 33)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 12 33, mixed mode, sharing)
Итак, после этого я запускаю описанный выше метод, но я получил следующее сообщение об ошибке :
Command_List = [cmd, /c, java, -jar, C:/Dir_ProGuard/proguard6.0.3/lib/proguard.jar, @C:/Dir_Run_ProGuard/XYZ.pro, -verbose]
Error: could not open `C:Program FilesJavajre1.8.0_91libamd64jvm.cfg'
Затем я зашел в панель управления системой, чтобы проверить свой путь к классу, ни один из них не указывает на jre1.8.0_91, поэтому мой вопрос: где эта информация «jre1.8.0_91», сохраненная в файле конфигурации, чтобы я мог перейти туда и обновить ее до моей последней версии JRE 12?
Комментарии:
1. Круто, ошибка в деинсталляторе Oracle:-(. Это ‘$ window $ так что это может быть запись реестра, а не файл конфигурации.
2. Убедитесь, что ваша системная переменная PATH имеет ваш OpenJDK path первым в списке, который указывает на что-либо «связанное с Java». Дважды проверьте переменную среды %java_home% и, если вы используете IDE (eclipse, IntelliJ, netbeans и т. Д.), Убедитесь, что вы переключили среду сборки на JDK12 (насколько я знаю, больше нет JRE, начиная с Java ~ 10ish)
3. Oracle JDK больше не является бесплатным?
Ответ №1:
Какой простой ответ, но я не понял, что теперь, после повторного запуска Windows, он работает правильно. Так что просто нужна перезагрузка!