Недавно я перешел на Ubuntu v20.04 с Windows 10 Pro v2004 из соображений производительности. Когда я был на Windows, я мог свободно скомпилировать проект java из другой java программы , написав:
String pathToCompiler = "\"C:/Program Files/Java/jdk-14/bin/javac\"";
Process compileProcess = Runtime.getRuntime().exec(pathToCompiler+" -d bin @.sources", null, new File("ProjectPath"))
Где исходный файл - это файл, содержащий список классов проекта
Приведенный выше код успешно работает на Windows 10.
- Но на Linux (Ubuntu): если я подставляю значение переменной
pathToCompiler
как pathToCompiler = "\"/usr/lib/jvm/java-11-openjdk-amd64/bin/javac\""
возникает исключение ниже, и программа, выполняющая команду, завершает работу:
"/usr/lib/jvm/java-11-openjdk-amd64/bin/javac" -d bin @.sources
java.io.IOException: Cannot run program ""/usr/lib/jvm/java-11-openjdk-amd64/bin/javac"" (in directory "/home/arham/Documents/Omega Projects/Project0"): error=2, No such file or directory
at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1128)
at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1071)
at java.base/java.lang.Runtime.exec(Runtime.java:592)
at java.base/java.lang.Runtime.exec(Runtime.java:416)
at ide.utils.systems.BuildView.lambda$3(BuildView.java:267)
at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.io.IOException: error=2, No such file or directory
at java.base/java.lang.ProcessImpl.forkAndExec(Native Method)
at java.base/java.lang.ProcessImpl.<init>(ProcessImpl.java:340)
at java.base/java.lang.ProcessImpl.start(ProcessImpl.java:271)
at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1107)
The problem is that the file actually exists but it says No Such File or Directory
Фактически, программа, которая компилирует проект, является Java IDE, которая Я создаю. Подскажите, пожалуйста, знает ли он, как исправить эту ошибку
У меня есть скриншот ошибки :(