Как установить JAVA_HOME в файле bat перед доступом к Java

Я делаю портативный майнкрафт, который полностью работает с флешки, включая java. На моем домашнем компьютере файл .bat работает отлично, однако на школьном компьютере он не запускается и выдает мне «java не распознается как внутренняя или внешняя команда, работающая программа или пакетный файл», что заставляет меня поверить, что пакет ищу java на локальном компьютере, в отличие от моих намерений использовать переносную java, установленную на флешке.

Вот мой код.

@echo off
Title Do not close this window
set APPDATA=%CD%\mcp_data
set JAVA_HOME=%CD%\mcp_data\Java\bin

java -Xmx3072M -jar "%CD%\mcp_data\launcher\MineCraft.jar"

person user1808010    schedule 30.10.2013    source источник


Ответы (1)


Вы никогда не устанавливаете переменную PATH для включения Java в любом месте. Ваша домашняя система знает, где найти копию java (поскольку она, скорее всего, установлена ​​и на вашем компьютере), но школьная система этого не знает.

Таким образом, вы можете либо попробовать изменить переменные пути на школьном компьютере (на что у вас могут быть права, а могут и не быть, и это оставит след, который им может не понравиться), либо вы можете сделать так, чтобы ваш bat-файл ссылался на копию Java на флэш-накопителе по его полному имени пути, т.е. %CD%\mcp_data\Java\bin\java.exe или любому другому пути исполняемого файла java.

Я рекомендую использовать полный путь, поскольку он находится в файле bat, поэтому тот факт, что он длиннее, не имеет большого значения.

Смотри ниже.

@echo off
Title DO NOT CLOSE THIS WINDOW!!! Closing this window will force close MineCraft
set APPDATA=%CD%/mcp_data

"%CD%\mcp_data\Java\bin\java.exe" -Xmx3072m -Dorg.lwjgl.opengl.Display.allowSoftwareOpenGL=true -jar "%CD%\mcp_data\launcher\MineCraft.jar"
person Vigilant    schedule 30.10.2013
comment
привет, я намерен использовать версию Java на флешке. Даже когда я включаю \java.exe в конце заданного пути JAVA_HOME, он все равно выдает, что java не является узнаваемой внутренней или внешней командой. - person user1808010; 30.10.2013
comment
Верно. Но используйте полный путь к exe. Например, если я захожу в свою систему C:\Program Files (x86)\Java\jre7\bin\java.exe , он работает независимо от того, установлен ли java в пути или нет. Поскольку ваш двоичный файл java находится на флэш-накопителе, его местоположение никогда не меняется, вы также можете жестко закодировать его в свой файл bat, чтобы избежать проблем с путями. Если это не сработает, возможно, в вашей школе настроена какая-то хитроумная система безопасности, которая блокирует Java любой ценой. - person Vigilant; 30.10.2013
comment
Как бы вы указали полный путь, когда на флешке постоянно меняется буква диска? Вот почему я хотел использовать %CD% - person user1808010; 30.10.2013
comment
О, оппс! я использовал неправильную переменную. вы хотите использовать %~d0% , что даст вам букву диска, на которой находится файл bat. Таким образом, вы используете %~d0%\mcp_data\Java\bin\java.exe, и он всегда будет нацелен на java.exe на диске, на котором установлена ​​ваша флешка. - person Vigilant; 30.10.2013
comment
Спасибо, попробую и отпишусь о результатах! - person user1808010; 30.10.2013
comment
К сожалению, это все еще не сработало - я знаю, что этот компьютер поддерживает Java, потому что, если я помещу minecraft.exe на рабочий стол, он откроется нормально (за исключением того, что он сообщает мне о плохих драйверах opengl - это можно исправить с помощью специального пакетного файла). Любые другие идеи? - person user1808010; 31.10.2013
comment
Какую ошибку выдал? Все, что я читал, говорило, что это должно работать на данный момент... - person Vigilant; 31.10.2013
comment
Java не распознается как внутренняя или внешняя команда, работающая программа или пакетный файл. Здесь, если вы хотите посмотреть всю установку, вот ссылка на загрузку. mediafire.com/download/ncxpeg78r3srnnl/ - person user1808010; 31.10.2013
comment
Он отлично работает с моим домашним ноутбуком, но не со школьным компьютером (с установленной Java) ИЛИ моим рабочим столом дома (без установленной Java). Это, вероятно, означает, что он не указывает на версию java на флэш-накопителе. - person user1808010; 31.10.2013
comment
Обновлен комментарий снова, используйте именно это. - person Vigilant; 31.10.2013
comment
@user1808010: user1808010: В StackOverflow благодарность выражается голосованием и принятием ответов :) - person ChrisWue; 31.10.2013
comment
как вы можете видеть по голосованию за его ответ, я уже сделал это. Как я могу принять ответ? - person user1808010; 31.10.2013
comment
Под кнопкой, на которую вы нажали, чтобы проголосовать за ответ, должно быть что-то в форме галочки, нажмите на нее. - person Vigilant; 31.10.2013