欢迎光临散文网 会员登陆 & 注册

在Ubuntu使用jEnv管理MC不同服务器的java需求(附加Ubuntu上MC安装教程)

2023-08-30 20:47 作者:oooiii222  | 我要投稿

--允许转载,转载请说明出处

        有时候在一台服务器上运行不同版本的minecraft服务器是很痛苦的事情,尤其是forge的服务器,我个人在服务器上同时保留有    1.10.2    ,    1.12.2    ,    1.16.5    ,    1.18.2    ,    1.19.4    这几个版本的服务器,这些服务端和其中安装的mod所需要的java不会是相同的,我通常需要安装    java8    ,    java10    ,    java17    ,    java19    等版本,其中一些mod甚至只支持特定的java子版本,因此我的java8保留了    291    361    和    381    三个子版本,用起来非常麻烦,一般情况下我会用sh批处理文件指定特定java版本的本地路径,但是这种指定方法在设置上特别麻烦,最后我找到了一种解决方法:使用jEnv在命令行条件下很方便的管理mc依赖的java版本。

        我习惯使用ubuntu系统运行minecraft服务器,在这篇文章中,我会为我的主力机安装双系统,系统使用最新的Ubuntu23.02,使用linux可以更好的利用电脑性能,我的主力机是一台NUCi7QNX,配置是9750H+RX6600,使用桌面版Ubuntu23.02,采用Ubuntu的原因是Ubuntu系统的图形化程度很高,在很多操作上可以直接在GUI界面进行而不是通过命令行。事实上我平时也是在ubuntu上用HMCL玩minecraft的。在我的两台电脑上,使用ubuntu系统游玩minecraft可以比在windows上获得超过20%的帧数提升,可能和我一直使用RDNA架构的A卡有关。

        ----本教程的前提是读者有一定的电脑知识,可以自行安装系统,但是一点也不熟悉linux系统。我也没有系统学习过linux系统,所以一些名词可能不太严谨,请读者理解。

        ----示例中的系统是ubuntu23.02,理论上其他debian和arch等的linux系统都可以这样配置。

        ----如果你安装的是Ubuntu的server版本(没有图形化界面),流程是差不多一样的,mc服务器可以不需要GUI界面的条件下运行,我后期会考虑用ARM版的ubuntu在bash上跑一遍。一些流程可以很方便的在搜索引擎上找到,CSDN上有很多关于一些指令或者流程的教程,如果你想详细了解linux系统的一些内容,可以买一本《鸟哥的linux私房菜》粗略看看。

        ----使用windows系统也可以参考这篇教程,在windows上使用jenv会比ubuntu更方便,大致思路上是一样的。

        ----因为java是一门很特殊的语言,理论上java版的mc服务器在其他架构的服务器上也能运行的很好,你甚至可以使用32位的硬件或者arm处理器,但是前提是你能找到为这些arm处理器开发的linux系统,各家的arm处理器的启动代码都不一样,所以各家甚至一些arm处理器必须使用特定的linux系统

        ----如果你只是想在ubuntu上玩mc,也可以参考这篇教程的后半部分,但是使用HMCL启动器真的没必要使用jenv管理java版本,HMCL自身就可以管理不同的java版本,而且提供很舒适的GUI环境。

        ----命令行环境是bash,使用zsh的童鞋要注意。

        ----用jenv安装java最好使用tar.xz的jar压缩包,建议不要先安装java,比如通过应用商店还是snap还是yum甚至是直接改profile文件之类的方法。

安装jEnv

www.jenv.be

        建议在安装jenv之前不要直接安装java。

        这是jenv的官方网站:

https://www.jenv.be/

        jenv的官方网站在国内并不能正常访问,github界面有时候也有可能打不开,但是gitee上面保留了jenv项目,可以访问这个网站。其实官网的说明文档很清晰。按照官网说明安装即可实现。

        gitee官网:

https://gitee.com/mirrors/jenv

        下面是对萌新的进一步安装说明:


        首先按快捷键ctrl+alt+t调出bash,bash是什么?bash是ubuntu的终端,相当于windows的cmd或者powershell。你也可以在应用中找到“终端”应用,这个和快捷键的作用是一样的。在桌面或者文件夹GUI中还可以按右键选择下滑菜单中的“在终端打开”,这样打开的命令行界面会自动导向这个文件夹的位置,这个打开的方法非常实用,尤其是对于不熟悉命令行的小白。打开终端后一般都是这种界面:

一个正常的bash界面

        界面前边的        oooiii222@NUC9i7QNX        在你的系统中可能不一样,@前面的是正在使用bash的用户,一些指令会需要不同权限的账号,linux中权限最大的用户是root账户,只有root账户才能安装,卸载应用,配置,修改一些高度关于系统的文件和设置以及开关机,我们只有在一些步骤中才会使用root账户,平时mc游玩,服务器的运行以及java版本的切换是不需要root账号也不建议用root账号的。在冒号后面接的~表示的是bash目前的位置,$符号表示账号的权限是管理员,root账号是#符号。

        按照官网的教程在里面输入:

git clone https://github.com/jenv/jenv.git ~/.jenv

        直接复制上面的指令,但是在bash中,你可能发现不能直接使用ctrl+c和ctrl+v来复制和粘贴,事实上ctrl+c在bash中是终止bash中运行的程序的作用,要想在bash中复制粘贴命令,请使用ctrl+shift+c和ctrl+shift+v。

        ubuntu可能会显示“没有安装过git”的提示,这时候你就需要按照下面提示的命令安装git,如图:

ubuntu会根据你输入法指令给出建议事项

        根据提示输入:

sudo apt install git

        因为这项指令是在安装软件,所以需要用“sudo"前缀暂时使用root权限,当输入这一条指令之后你可能会看到这样的提示:

密码是隐藏的

        当输入密码的时候为了安全性,ubuntu是不会显示你输入的字符的,这时候输入安装系统时设置的密码之后按回车,在读取到软件包之后会出现这样一行字:“您希望继续执行吗?[Y/n]”直接输入字母y并且回车就会安装git这个软件。

        如果你有强迫症想在安装后卸载这个软件的话,可以使用这串指令:

sudo apt remove --purge git

        “--purge”后缀表示删除用户配置,后面接的是软件包名字,可以改成其他软件包的名字。

        再执行一下这一串代码就可以完成jenv的下载:

git clone https://github.com/jenv/jenv.git ~/.jenv

        下载完jenv之后就要配置jenv。jenv不是通过deb这样的安装包的,它存储在~/.jenv的地址里面 ,为了在bash里使用jenv的指令,我们需要配置jenv,具体方法就是将jenv的调用写入环境变量,我们使用echo语句来实现这一点,echo语句可以将输入重定向到文件中,在命令行中输入这两行就可以实现:

echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bash_profile

        (回车执行后再输入下一条,一般不会显示任何内容。)

echo 'eval "$(jenv init -)"' >> ~/.bash_profile

        这里需要注意的一点是jenv的环境变量是写在bash_profile文件里面的,,这相当于用户级的设置,因为“~”表示的是用户的/home地址,所以只有你使用的当前账号才能调用jenv,在root账号下是不能正常使用jenv的。

        注入环境变量后需要让其发挥作用,最好的方法就是重启或者注销系统,我这里展示注销系统的做法,在右上角找到系统注销的选项:

注销选项在下滑菜单里面很显眼的位置

        这样在你重新登陆系统的时候系统会重新家在bash_profile文件,然后打开终端输入jenv,如果一切操作正常的话会正常显示:

正常显示的界面

        如果你想在root环境下使用jenv,或者这样的安装方法失败了,那么你可能需要参考下面的内容。

一些详细的另一种安装方式和环境变量的说明以及zsh的支持

        使用zsh命令行的朋友直接把echo命令导向的文件改成    .zshrc    既可。

        我们还可以使用vim手动写入这些内容。在linux系统中前缀是“.”的文件是隐藏文件,“/”表示的是根目录地址,“~”表示的是当前用户的home地址。使用快捷键调出终端,并使用ls命令查询home文件夹中的文件,因为我们要查找隐藏文件,所以要加上“-a”后缀。


可以看到.bash_profile文件

        然后使用vim编辑这个文件:

vim .bash_profile

        ubuntu并没有预装VIM软件,所以你仍需使用:

sudo apt install vim

        指令自行下载。用vim打开文件后按“i”进入编辑模式,将这两串指令输入进去:

export PATH="$HOME/.jenv/bin:$PATH"

eval  "$(jenv init -)"

        然后按esc键退出编辑,输入":wq"后回车即可保存文件

        

vim界面

        在保存之后进行注销操作再登陆后就可以载入这个环境变量。如果想在root账号中使用jenv,就必须修改/etc/profile文件了。这种情况下不用再修改bash_profile文件,因为在/etc/profile文件中添加的设置会对所有用户起作用,一般不建议在这个文件中添加环境变量。使用指令:

sudo vim /etc/profile

        修改该文件,要注意修改该文件需要的等级是root,如果不使用sudo前缀会导致保存失败,这时候必须使用“:q!”指令强制退出vim并不保存该文件再重新修改该文件。

        如果使用git命令克隆失败,这时候就必须在gitee中下载压缩包自己配置环境变量:


下载zip压缩包

        将该zip文件转移到/home文件夹里面解压到新建的jenv文件夹里面,这些操作可以在gui界面里面进行,因为gitee的下载必须登陆,我没有gitee账号也不想有所以这里没有图片指示。解压在/home文件夹里面是为了方便,实际上你可以将jenv解压在任何地方。然后在/etc/profile文件或者~/.bash_profile文件加入环境变量:(jenv地址有变化,注意不能照抄前面的指令)

export PATH="$HOME/jenv/bin:$PATH"

eval  "$(jenv init -)"

        或者使用echo注入:

echo 'export PATH="$HOME/jenv/bin:$PATH"' >> ~/.bash_profile

        (回车执行后再输入下一条,一般不会显示任何内容。)

echo 'eval "$(jenv init -)"' >> ~/.bash_profile

        重新登陆系统之后在命令行使用jenv指令查看是否安装成功。

安装java并加入jenv,在命令行中选择特定的java版本

        在oracle官网里面下载java,在这里我安装java17和java8做演示,官网:

https://www.oracle.com/cn/java/technologies/downloads/

        在oracle中下载java8需要oracle账号,免费注册即可。

java8的下载界面,这里我选择java se
选择x64 tar.xz封装的文件

        为了方便管理,我建议直接下载tar.xz封装的linux版文件,这个文件本质上是个压缩包,不是应用的安装包(.deb),请对应自己的CPU架构,我这里是x64,一般的PC也是x64。下载时需要登陆oracle账号:

登录到oracle账号

        你也可以在下面找到jre,直接下载jre8,这样安装的内容会比java se8少,安装哪一个都没问题。同样下载tar.xz的包。

jre8下载,同样需要oracle账号

        然后下载java17,同样下载tar.xz文件,这回不需要oracle账号:

java17下载
下载tar.xz文件

        在/home目录下新建JAVA文件夹,将下载好的java文件放进去然后右键逐个解压。

在/home目录新建JAVA文件夹
直接点击“提取”

        进入解压好的java版本的文件夹中,在上面的地址栏找到下滑菜单,选择复制位置:

任选一个,没有先后要求

        然后调出终端,输入指令:

jenv add                在后面按ctrl+shift+v将地址复制在后面然后回车,如果出现:ln:无法创建符号链接 ****** 请重新安装jenv并重新登陆或者重启。

        jenv会自动识别java版本号和文件,如果你有强迫症可以参考man文件去自行修改,我没有如此强烈的强迫症就不改了,看不懂man的区CSDN查查或者问一问都可以解决这个问题。按照上面的步骤将两个java版本都加入jenv中,使用:

jenv global 17

        切换到java17,同理后面改成其他数字就是将系统的java切换到其他版本。使用java -version可以查看当前java版本。

切换到java17
查看java版本

使用HMCL安装minecraft并进行游玩(后面有服务器教程)

        在HMCL官网下载HMCL启动器的linux版本,目前是一个jar文件(早先是sh的批处理文件),为了方便我直接下载dev测试版(这绝对不是因为城通网盘的账号被我弄丢了的原因)。在/home位置新建“HMCL”文件夹,将jar文件丢到里面。这个位置也是为了方便而考虑,但是注意不要直接放到桌面,最新的mc版本可能不支持中文路径,比如1.20.1。

    HMCL需要授予权限才能执行,但是这个文件是jar文件不是常规的可执行文件,不能在GUI界面直接赋予执行权限,我们要在命令行中为其授予权限。在文件夹中右键点击“在终端中打开”,这样打开的bash就会直接定向到这个文件夹方便我们操作:

打开终端

        然后输入指令赋予权限:

sudo chmod -x hmcl-******.jar 

        或者使用:

sudo chmod 777 hmcl-******.jar

为文件赋予可执行权限

        实际上效果是一样的。指令中的星号要输入你下载的hmcl文件的文件名,在输入到这里的时候可以按tab键自动补全,不需要全部输入。正常情况下不会有任何提示输入。然后输入这串指令启动hmcl,要注意hmcl需要java17,所以要提前将java版本切换到java17:

java -jar hmcl-******.jar

启动hmcl

        如果不想每次重复输入指令启动可以将指令写入一个sh批处理文件中,以后每次直接执行批处理文件就可以启动hmcl,使用touch创建一个批处理文件,文件名随意,我这里用“SETUP”,后缀用“bat”和“sh”都可以,但是linux的传统是用“sh”:

touch SETUP.sh

创建一个新文件

        同样没有任何提示。然后在文件夹中你就可以找到这个文件了,可以直接双击用文本编辑器打开,在里面输入启动hmcl的指令就可以:

java -jar hmcl-******.jar

        如果你想把这个文件放到桌面上启动,将后面的文件名改成该文件的地址就可以,上面的例子可以改成:

java -jar ~/HMCL/hmcl-******.jar

        最后这个sh批处理文件还没有执行权限,这回我们可以直接在gui界面赋予权限了,右键文件选择属性,开启最下面的“作为程序执行”:

为该文件赋予执行权限

        如果你仔细阅读了前面的教程或者有一定的linux基础,可以直接在命令行中用vim编辑你的批处理文件(vim SETUP.sh                i                java -jar hmcl-******.jar                [esc]                :wq                [enter]                sudo chmod 777 SETUP.sh)并赋予可执行权限。

        注意!

        如果你是单纯想在ubuntu上玩minecraft的话真的没必要安装jenv,直接安装java就可以,在命令行输入java可以直接显示这幅画面:

懒人安装java

        按照上面的提示先安装java17或者java20再安装java8(如果你想玩老版本的话)就可以,hmcl可以自动找到java版本,但是仍需要安装java17或以上版本的java来第一次启动hmcl。

        如果你打开java的bin文件夹你可能会发现java的可执行程序没有后缀,甚至刚才我们修改的文件也没有后缀,这是因为神奇的是linux大部分时候并不需要用后缀来分辨文件类型,linux是通过识别文件开头或者末尾的标识来区分文件种类的,如果在hmcl添加java版本要注意这一点,直接选中java文件就可以,不用担心该可执行文件没有后缀的问题。

各种服务器下载地址

        直接在forge官网上就可以下载forge服务器的安装包:

https://files.minecraftforge.net/net/minecraftforge/forge/

        fabric的同理:

https://fabricmc.net/use/server/

        原版java(香草版)的服务器可以在官网下载:

https://www.minecraft.net/zh-hans/download/server

        原版服务器只提供了一个jar包,你可能需要写一个sh文件来启动这个文件,指令参考官网给出的指令。

        基岩版服务器官方下载(基岩版服务器不需要java):

https://www.minecraft.net/zh-hans/download/server/bedrock

        按照官网指导安装一般不会出什么问题。


        这里我只提供forge版本的安装示例,forge服务器一般更为复杂,其他服务端的安装方法也可以参考这个。

Forge服务端的安装(1.19.4为例)

        在官网下载相应版本的jar文件:

下载 Recommended版本即可


        Forge官网提供了Latest(最新)版本和Recommended(推荐)版本的jar包,直接下载Recommended版本即可。在/home地址处新建一个文件夹,我新建了“FORGE1.19.4”文件夹,你也可以采用其他名字,将jar文件放到文件夹中,右键选择“在终端中打开”,然后输入指令启动该jar文件:

java -jar forge-******-installer.jar                (不要直接输进去,补全自己的forge文件名)

启动forge安装程序

        选择“Install server”选项,然后将服务器的安装地址定向到该文件夹中:

正确定向服务器安装地址

        下载可能会失败,你可能需要重新下载,但是现在forge在国内是可以正常下载服务端的,下载完成之后就可以直接删除jar安装文件了,留着也没有什么用。(如果你的服务器第一次安装失败还可以删掉这个jar安装文件产生的日志文件,也没什么用)然后文件夹中剩下的文件应该是这样的:

第零次启动

        forge为我们保留了很方便的批处理文件来启动服务端,在linux下.bat和.sh两个文件我们都可以使用,按照linux的传统我删除了run.bat,然后运行run.sh:

第一次启动

        然后我们就需要在新生成的eula文件中同意授权,这是在同意minecraft服务端的一些条例,只不过这种方法比较特殊。直接打开eula.txt文件,将其中的false改称true:

修改过的文件,记得保存

        然后就可以再启动一次服务器:

服务器启动成功

        服务器的GUI界面和bash上面显示的是同步的,在gui上和bash上输入指令也是一样的。使用“stop”来关闭服务器,这样可以避免服务器保存失败,以后就可采用这种方法关闭服务器。在服务器启动的时候出现的“Preparing spawn area **%”是生成或加载区块的意思,如果该进度没有进行到100%,你的服务器就已经崩溃,这时要排查mod或者java版本兼容性的问题:

生成区块ing
关闭服务器

        第一次启动服务器之后,你可能需要修改server.properties来修改服务器内容(比如离线模式,没有正版账号的情况下必须开启这个选项),具体修改方法可以参考wiki:

https://minecraft.fandom.com/zh/wiki/Server.properties

        内网穿透,ipv6,端口映射等服务器开放方法我以后可能会写一篇文章详细讲解,如果你想在本地路由器或者当前电脑上验证服务器,可以在相应版本的mc上找到多人游戏中的添加服务器,然后直接输入本地环回地址:

127.0.0.1

        进行联机验证,mod服务器一定要保证服务端mod同步。如果服务器要安装mod可以直接把mod丢到服务器的mod文件夹中,在控制台中输入:

op ******

        即可赋予某人op权限,一些进阶设置可以在wiki中查询,比如白名单等方法。

        一键三连是支持我更新文章的动力谢谢大家。

--允许转载,转载请说明出处

在Ubuntu使用jEnv管理MC不同服务器的java需求(附加Ubuntu上MC安装教程)的评论 (共 条)

分享到微博请遵守国家法律