Minecraft在jdk 1.7.0_u2 x64中。

我有Ubuntu 11.10 64位,并通过webupd8页面安装了JDK 1.7.0更新2 x64。但是目前我在玩Minecraft游戏时遇到了问题。从Minecraft.net下载启动器后,通过java -jar /home/zrebec/Downloads/minecraft.jar启动游戏,启动器正常启动,登录后游戏开始下载更新,但是接着我只看到黑屏,终端中显示如下内容:
Setting user: zrebec, -356009615199623309
Exception in thread "Minecraft main thread" java.lang.UnsatisfiedLinkError: /home/zrebec/.minecraft/bin/natives/liblwjgl.so: /home/zrebec/.minecraft/bin/natives/liblwjgl.so: wrong ELF class: ELFCLASS32 (Possible cause: architecture word width mismatch)
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1928)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1825)
at java.lang.Runtime.load0(Runtime.java:792)
at java.lang.System.load(System.java:1059)
at org.lwjgl.Sys$1.run(Sys.java:69)
at java.security.AccessController.doPrivileged(Native Method)
at org.lwjgl.Sys.doLoadLibrary(Sys.java:65)
at org.lwjgl.Sys.loadLibrary(Sys.java:81)
at org.lwjgl.Sys.<clinit>(Sys.java:98)
at org.lwjgl.opengl.Display.<clinit>(Display.java:132)
at net.minecraft.client.Minecraft.a(SourceFile:180)
at net.minecraft.client.Minecraft.run(SourceFile:648)
at java.lang.Thread.run(Thread.java:722)

请问有人可以帮我解决这个问题吗?我认为问题可能出在架构上,因为: liblwjgl.so:/home/zrebec/.minecraft/bin/natives/liblwjgl.so:错误的ELF类别:ELFCLASS32(可能原因:架构字宽不匹配)
有什么想法吗?
我知道,也许这个问题与Ubuntu无关,但在64位系统上一切都运行得很完美,我认为接受的答案可以帮助很多用户,在Linux下更好地玩游戏。真的非常感谢任何建议。

2为什么不坚持使用openjdk-6-jre呢?我弟弟在64位的Kubuntu 11.10上玩Minecraft没有任何问题。 - Lekensteyn
使用 openjdk-6-jre 时,我在游戏过程中遇到了一些问题。大约2-3分钟后,游戏闪烁并崩溃 :( 或许是游戏中的一些错误?但在Windows上,我没有这个问题。我可以玩上几个小时,一切都没事。而在那里,我使用的是Oracle JDK 1.7(因为我是初级Java程序员,正在学习Java)。谢谢 - Bambi Bunny
我会尝试使用32位版本的Java,至少我认为这是这个错误消息的问题所在。 - Mad Scientist
所以...问题仍然存在于openjdk-7-jre-amd64 :) 我安装了openjdk `java版本"1.7.0_147-icedtea" OpenJDK运行时环境(IcedTea7 2.0)(7~b147-2.0-0ubuntu0.11.10.1) OpenJDK 64位服务器虚拟机(构建21.0-b17,混合模式) - Bambi Bunny
我的游戏可以在OpenJDK上运行,但无法在Oracle JDK上运行。使用的是Minecraft 1.2.5版本。 - Luis Alvarado
9个回答

我有同样的问题,但是我通过 webupd8 - 使用PPA存储库在Ubuntu上安装Oracle Java (JDK) 7进行了安装。在搜索互联网时,我找到了这个脚本(我根据我的系统进行了适应),但基本上就是这样:
#!/bin/bash
export LD_LIBRARY_PATH="/opt/java/jre/lib/amd64"
java minecraft.jar

我的系统脚本:
#!/bin/bash
export LD_LIBRARY_PATH="/usr/lib/jvm/java-7-oracle/jre/lib/amd64"
java -jar Minecraft.jar

希望这对你有所帮助。

1是的,非常好的解决方案 :) 这就是我大约一个小时前找到的 :) 非常感谢你。 - Bambi Bunny
1LD_LIBRARY_PATH对我来说是缺失的一部分。谢谢! - Justin Force

在一个 Fedora 论坛上找到了这个方法,对我来说很有效,在运行 12.04 Ubuntu-64bit 和 OpenJDK7u3 的时候。

链接

“我刚遇到了同样的问题,以下是解决方法:

  1. 前往 http://lwjgl.org/download.php
  2. 点击链接下载最新稳定版本
  3. 下载 lwjgl-x.x.x.zip(写作时为 lwjgl-2.8.3.zip)
  4. 进入你的主文件夹,按下 ctrl + h 显示隐藏文件
  5. 进入 .minecraft/bin 目录,将从下载的压缩包中的 jar 文件夹中匹配的 .jar 文件复制到此处
  6. 将压缩包中 native/linux 文件夹中的 .so 文件复制到 .minecraft/bin/natives 目录下
  7. 启动 Minecraft

希望能对你有所帮助!”


救命稻草!我快要气炸了。 - Chev

不必每次想运行Minecraft时都启动一个脚本,你也可以将库文件添加到ldconfig中。
sudo su -c "echo [path to java]/lib/amd64(or i386) > /etc/ld.so.conf.d/java.conf"
sudo ldconfig

现在只需通过文件管理器使用Java打开Minecraft即可运行。
(示例行1:sudo su -c "echo /usr/lib/jvm/oracle-java/lib/amd64 > /etc/ld.so.conf.d/java.conf")

2不必使用sudo su,你可以使用echo ... | sudo tee /etc/ld.so.conf.d/java.conf - l0b0
@l0b0 或者使用sudo su -c "echo ... > /etc/ld.so.conf.d/java.conf"。不管怎样,感谢您的建议。 - mid_kid
1你说得对。关键是尽量少以root权限运行。 - l0b0

如果你使用这种类型的Java,http://www.wikihow.com/Install-Oracle-Java-on-Ubuntu-Linux,那么这就是你所需要的正确代码。
#!/bin/bash
export LD_LIBRARY_PATH="/usr/local/java/jre1.7.0_05/lib/amd64"
java -jar /path to your minecraft.jar file

谢谢JoZ3,我只是稍微修改了你的代码。

@JoZ3 非常感谢你。你解决了我的问题。关键是重定向了那个路径。这只是给初学者的一个小教程。在阅读这篇文章之前,我假设你们都像JoZ3在他的帖子中写的那样安装了JDK 7。(需要Oracle JDK。)
  1. 下载 minecraft.jar。将其放置在桌面上的某个文件夹中。
  2. 创建一个文本文档,并将JoZ3的命令粘贴到其中。这是所需的命令,我们正在创建一个shell脚本。

    #!/bin/bash  
    export LD_LIBRARY_PATH="/usr/lib/jvm/java-7-oracle/jre/lib/amd64"  
    java -jar Minecraft.jar 
    

    将其保存为,例如,fix.sh

  3. 确保你运行了以下命令:chmod fix.sh。在终端中输入以下命令,切换到文件所在的目录:

    sudo chmod 755 fix.sh
    
  4. 通过将其拖动到终端并按Enter键,或手动在终端中输入其位置并按Enter键来运行fix.sh

游戏现在应该能正常运行了!它解决了我的问题。

我下载了Windows的exe文件,让它加载,从Windows中取出了Minecraft的jar文件,发现这对我来说有效(因为他们网站上的Linux版本不行)。

所以...我找到了解决方法:)

通过这个页面,我创建了这个脚本,它完美地运行:) 我移除了OpenJDK,在执行此脚本后游戏正常工作:)

export LD_LIBRARY_PATH="/usr/lib/jvm/jdk1.7.0_02/jre/lib/amd64"
java -Xmx1024M -Xms512M -cp minecraft.jar net.minecraft.LauncherFrame

这对我有效:

#!/bin/bash
export LD_LIBRARY_PATH="/usr/lib/jvm/java-7-oracle/jre/lib/amd64"
java -Xmx1024M -Xms512M -cp minecraft.jar net.minecraft.LauncherFrame

我修改了目录,因为我使用的是ORACLE的JAVA。这解决了黑屏的谜团。(:

简单的解决方法,从Minecraft官网下载.jar文件,将其移动到桌面上,右键点击,选择属性,勾选使文件可执行,完成。