Заставьте Minecraft (или Java Preferences.app) работать на Java 7

6

Minecraft (и, возможно, некоторые другие приложения) не будут работать в системе с удаленной предустановленной Java и установленной текущей JDK 7 Я уже вставил ссылку на каталог Java 6 в текущий каталог. Другие приложения, такие как Adobe Illustrator, которым требуется Java, работают с этим исправлением. Сообщение об ошибке гласит no compatible version of java 1.5+ is available,

Screenshot of the error message

Каково разумное объяснение, почему это приложение работает на Java 7 в Linux и Windows, но не на Mac, и что можно сделать для этого?

Выход из /usr/libexec/java_home -V:

Matching Java Virtual Machines (4):
    1.7.0_17, x86_64:   "Java SE 7" /Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
    1.7.0_17, x86_64:   "Java SE 7" /Library/Java/JavaVirtualMachines/jdk1.7.0_17.jdk/Contents/Home
    1.7.0_17, x86_64:   "Java SE 7" /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
    1.7.0_17, x86_64:   "Java SE 7" /System/Library/Java/JavaVirtualMachines/jdk1.7.0_17.jdk/Contents/Home

/System/Library/Java/JavaVirtualMachines символическая ссылка на /Library/ один и 1.6.0.jdk символическая ссылка на jdk1.7.0_17.jdkПоэтому только один JDK устанавливается.

A.S.
источник
1
Да, я видел эту тему. Второй действительно решает другую проблему, о которой я уже говорил ( «Я уже сделал ссылку на каталог Java 6 на текущий» ). Первый в основном говорит только о переустановке Java 6.
A.S.
Какая у вас текущая версия JRE?
James Graham
@JamesGraham java -version java version "1.7.0_17" Java(TM) SE Runtime Environment (build 1.7.0_17-b02) Java HotSpot(TM) 64-Bit Server VM (build 23.7-b01, mixed mode)
A.S.
1
@AdamS проблема в том, что Java 7 использует Info.plist, отличный от Java 6, и поэтому его необходимо отредактировать - сообщить об ошибке в Minecraft - подробности см. В этих ответах на ТАК а также AskDifferent -для приложения для создания правильного пакета - и есть еще один отличный ответ на AskDifferent, который я не могу найти сейчас
Mark

Ответы:

3

Minecraft для Mac и другие приложения Java обычно упаковываются с помощью JavaApplicationStub от Apple. JavaApplicationStub - это небольшая программа, которая декодирует Info.plist внутри приложения, обнаруживает Apple Java (6), отображает сообщение об ошибке «Чтобы открыть это приложение, необходимо установить устаревшую среду выполнения Java SE 6» (если Apple Java не установлена ) и, наконец, вызывает Apple Java с правильными аргументами для запуска приложения. Проблема в том, что JavaApplicationStub жестко связан с обнаружением и загрузкой Apple Java. JavaApplicationStub почти никогда не будет вызывать Oracle Java, независимо от того, какие аргументы вы передаете, или как вы пытаетесь обмануть его для вызова Oracle Java.

Первым шагом является изменение файла Info.plist в Minecraft, чтобы вывести JavaApplicationStub из цикла и заменить его чем-то, что является Oracle Oracle дружественным. universalJavaApplicationStub - это скрипт bash, который автоматически определяет Oracle Java или Apple Java и вызывает приложение. Я описал процесс в своем блоге, чтобы заставить Minecraft для Mac работать независимо от того, какая Java установлена:

http://svexpertise.blogspot.com/2015/08/make-mac-minecraft-work-on-oracle-java.html

Практически все решения работают с JavaApplicationStub. Некоторые предполагают его удовлетворение (путем установки Apple Java), другие - избегая его (путем непосредственного вызова .jar), а некоторые - заменяя его (путем установки пользовательского сценария bash или universalJavaApplicationStub).

Daniel Howard
источник
3

Каков вывод терминала с сообщением об ошибке?

Глядя на это обсуждение:

http://www.linuxquestions.org/questions/linux-games-33/minecraft-not-running-on-java-7-a-929983/

Вывод ошибки указывает, что двоичные файлы Minecraft Java связаны с 32-битными версиями. Похоже, у вас установлена ​​64-битная версия. Ваша установка Java7 поддерживает 32 бита?

Кроме того, вы используете последние обновления кода Minecraft / мод / etc?

Редактировать:

Учитывая сообщение об ошибке в ответе, это привело меня к этому:

2 things are needed to be changed to make it run on OSX x64 and this is what i done.. 

1) add in x86_64 to the Info.plist as follows: 
JVMArchs 

i386 
x86_64 
ppc 

2) Set the execute flag on the JavaApplicationStub file 
chmod +x /Applications/Minecraft.app/Contents/MacOS/JavaApplicationStub 

now it works :)

Это было найдено в:

https://getsatisfaction.com/mojang/topics/osx_x86_64_minecraft_execution_fixed

С помощью:

http://www.minecraftforum.net/topic/487766-fixed-lsopenurlswithrole-failed-with-error-10810/

Что касается проверки версии Java:

$ java -version
java version "1.6.0_43"
Java(TM) SE Runtime Environment (build 1.6.0_43-b01-447-11M4203)
Java HotSpot(TM) 64-Bit Server VM (build 20.14-b01-447, mixed mode)

Указывает на 64-битную виртуальную машину сервера в смешанном режиме. При тестировании с '-d32' и 'd64' среда выполнения java должна сообщать об этом с помощью экрана справки против ошибок, хотя это не исключает 32-битных / 64-битных библиотек в отсутствующих путях.

java -d32

java -d64

Но chmod выше может помочь больше.

Обратите внимание, я не использую Minecraft.app для запуска MineCraft, когда я запускаю его на Mac. Я делаю следующее:

Мой скрипт-обертка:

#!/usr/bin/env bash
java -Xmx3048M -Xms2024M -cp "$1" net.minecraft.LauncherFrame 

И я управляю этим:

./run-minecraft minecraft.jar

У меня есть параметр, потому что иногда мне нравится запускать сторонние оболочки вокруг самого приложения MineCraft.

Добавить:

Кстати, это альтернативный метод, который я использую для запуска MineCraft, так как MineCraft.app на Mac никогда не работал для меня надежно.

  • http://minecraft.net/download
  • Загрузите файл JAR для "Minecraft для Linux / Other"
  • Пробная стрельба с:

    java -Xmx1024M -Xms512M -cp minecraft.jar net.minecraft.LauncherFrame

Wing Tang Wong
источник
Выходной терминал LSOpenURLsWithRole() failed with error -10810 for the file /Applications/Minecraft.app., Minecraft.app является последним с сайта. Как узнать, поддерживает ли моя установка Java 32-битную версию?
A.S.
1
Это Info.plist .app: pastebin.com/baea0VKX , Как соотв. где я могу добавить x86_64 там? На другом примечании: я мог бы начать игру с Minecraft.app/Contents/Resources/java/MinecraftLauncher.jar отлично, так что это определенно как-то связано с .app.
A.S.
1
Я добавил блок конфигурации в ваш файл Info.plist и снова вставил сюда: pastebin.com/EVRAvZtv Надеюсь, что это работает.
Wing Tang Wong
1
К сожалению, это не сработало. Я поиграл с настройками, а также с другими вещами, упомянутыми здесь ( developer.apple.com/library/mac/#documentation/Java/Reference/... ) но это тоже не помогло. Когда я попытался удалить JVMVersions, он открылся, но сразу же вылетел со следующим сообщением об ошибке: pastebin.com/CnFHxsBg
A.S.
1
Как я уже сказал, .jar внутри .app работает, как и .jar с веб-сайта. Мне не терпелось найти причину того, что .app не работает, потому что проблема не ограничивается Minecraft.app, но также и Java Preferences.app (я предполагаю, что все файлы .app обернуты .jar). Но кажется, что это это что-то, что не так легко решить ... Тем не менее я вознагражу вас щедростью за ваши усилия и попытаюсь разобраться в этом еще раз, когда у меня будет больше времени. Спасибо тебе пока!
A.S.