Подтвердить что ты не робот

Правильно установите 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?

4b9b3361

Ответ 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.