Правильно установите Java для Matlab
Я пытаюсь извлечь файл jar из кода Matlab с помощью javac из Библиотечного компилятора (пакет java).
Я установил JAVA_HOME
в:
C:\Program Files\Java\jdk1.7.0_71
и добавлен в PATH
:
C:\Program Files\Java\jdk1.7.0_71\bin
.
Когда я ввожу java -version
в свою консоль, я получаю java version jdk1.7.0_71
и запускаю javac -version
показывает jdk1.7.0_71
.
Однако, похоже, что matlab не смог найти javac, поэтому я не могу скомпилировать свой код .m
в файл .jar
. Когда я попытался скомпилировать код .m, я получил следующее:
Error: An error occurred while shelling out to javac (error code = -1).
Unable to build executable.
Executing command: ""C:\Program Files\Java\Java\jdk1.7.0_11\bin\javac" -verbose - classpath "...\MATLAB\R2014a\toolbox\javabuilder\jar\javabuilder.jar" -d "...\features_extraction\for_testing\classes" "...\features_extraction\for_testing\features_extraction\Class1.java" "...\features_extraction\for_testing\features_extraction\Features_extractionMCRFactory.java" "...\for_testing\features_extraction\Class1Remote.java" "...\for_testing\features_extraction\package-info.java""
Это каталог моей папки java bin и javac.exe существует: ...\Java\jdk1.7.0_71\bin\bin\javac
? Я нашел эту ссылку для совместимости между Java и Matlab2014a (это моя версия) здесь. Что я должен проверить, чтобы правильно связать Matlab с Java? Несколько дней назад Matlab корректно работал с Java.
В моем PATH
я заметил существование следующего пути: C:\ProgramData\Oracle\Java\javapath
, в котором есть три неправильных ярлыка для java.exe, javac.exe и javax.exe. Когда я набираю консоль matlab getenv JAVA_HOME
, я получаю C:\Program Files\Java\jdk1.7.0_11
, а когда писал version -java
, я получил: Java 1.7.0_11-b21 with Oracle Corporation Java HotSpot(TM) 64-Bit Server VM mixed mode
. Когда я пишу javac
в консоли matlab, я получаю: Undefined function or variable 'javac'.
Когда я пытаюсь создать С++-библиотеку, у меня возникла аналогичная проблема: Ошибка: произошла ошибка при обстреле mbuild (код ошибки = -1).
Не удалось создать исполняемый файл.
РЕДАКТИРОВАТЬ: В моем случае считается отсутствие соответствующего MCR?
Ответы
Ответ 1
Вы сказали
getenv JAVA_HOME Я получаю C:\Program Files\Java\jdk1.7.0_11, а когда я написал версию -java, я получил: Java 1.7.0_11-b21
попробуйте использовать setenv в MATLAB, doc здесь http://www.mathworks.com/help/matlab/ref/setenv.html
setenv('JAVA_HOME','C:\Program Files\Java\jdk1.7.0_71');
setenv('PATH','C:\Program Files\Java\jdk1.7.0_71\bin');
Ответ 2
Следуя ответам в этой ссылке
http://www.mathworks.com/matlabcentral/answers/131639-matlab-deploytool-not-working-fails-while-building
похоже, что вам нужно установить JDK 1.7.0_11-b21, который является совместимым с вашей версией MATLAB для компиляции в банку. Кроме того, после установки этой конкретной версии вы должны изменить переменные среды JAVA_HOME и PATH. Попробуйте это, чтобы узнать, помогает ли это.
Ответ 3
У меня была очень похожая проблема с моей установкой.
Я установил переменную окружения (нажмите
> type env > Enter) JAVA_HOME
(в разделе "Пользовательские переменные" ) в мой домашний каталог JDK (не папку bin) без каких-либо завершающих \
или ;
.
Проблема возникает из-за того, что MATLAB не может выполнить javac правильно, однако, чтобы точно определить, что MATLAB пытается выполнить (что не работает), нам нужно использовать командное окно, а не библиотечный компилятор.
Похоже, вы уже это сделали, но для полноты я добавлю этот процесс для других.
Чтобы узнать, что выполняет MATLAB, нажмите "Открыть файл журнала" и скопируйте всю первую строку.
![Ошибка компилятора библиотеки]()
![Журнал ошибок]()
Вставьте первую строку в командном окне MATLAB и добавьте -v
в конец.
Нажмите enter, чтобы запустить команду, и обратите внимание на "Выполняющая команда:", которая печатается на экране.
Как только у вас появится "команда выполнения", которую MATLAB вернет для вас, проверьте первый путь в этой команде и убедитесь, что она соответствует вашему файлу javac.
В своем оригинальном посте вы сделали это и разместили
C:\Program Files\Java\Java\jdk1.7.0_11\bin\javac
путь, который содержит \Java\Java
, если это не опечатка, это может быть проблемой, поскольку это не путь установки по умолчанию Java. После этого вы также скажете, что ваша установка находится на
...\Java\jdk1.7.0_71\Bin\Bin\Javac
который содержит \bin\bin
и также не является каталогом установки java bin по умолчанию, возможно, другой опечаткой?
Если путь к javac соответствует точно, вы можете попробовать скопировать и вставить "исполняющую команду" в окно командной строки ОС (
+ R > cmd > Enter) и ищите ошибки. Делая это, мы можем удалить себя из установки MATLAB, и если ошибки все еще существуют, это, вероятно, не имеет ничего общего с MATLAB.
Чтобы узнать, может ли эта проблема возникнуть из-за других переменных среды, я удалил все остальные пути к установке java (сохраняя JAVA_HOME
) в переменных среды. MATLAB использует абсолютный путь к установке java и поэтому все еще может компилироваться с помощью javac, используя только переменную среды JAVA_HOME
.