1、下载maven并解压
2、麒麟系统中设置apache-maven-3.9.5环境变量
wqz@wqz-pc:~/桌面$ sudo vim /etc/profile --》编辑配置文件
输入密码
export MAVEN_HOME=/home/wqz/apache-maven-3.9.5
export PATH=${MAVEN_HOME}/bin:${PATH}
注意:vim编辑器的使用,输入:i键表示进入编辑模式,在文件末尾追加内容,esc键表示退出编辑模式,:键表示进入末行模式,可以输入w+回车键保存编辑内容,
:+q+回车键退出vim编辑器,进入终端命令界面。
麒麟系统下环境变量名称用大写字母,环境变量值中引用环境变量名称时以:${环境变量名称}或$环境变量名称,(${PATH} 或 $PATH),环境变量值中的路径分割符为冒号:,
而win系统下为逗号,。
设置PATH环境变量时,最后需要加上${PATH},如:export PATH=${MAVEN_HOME}/bin:${PATH}
wqz@wqz-pc:~/桌面$ source /etc/profile --》保存配置文件
wqz@wqz-pc:~/桌面$ mvn -v --》查看配置是否成功
Apache Maven 3.9.5 (57804ffe001d7215b5e7bcb531cf83df38f93546)
Maven home: /home/wqz/apache-maven-3.9.5
Java version: 17.0.6, vendor: Private Build, runtime: /usr/lib/jvm/java-17-openjdk-arm64
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "5.4.18-85-generic", arch: "aarch64", family: "unix"
wqz@wqz-pc:~/桌面$ echo ${PATH} --》查看特定环境变量
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/wqz/apache-maven-3.9.5/bin
终端命令:env --》查看全部环境变量
终端命令:printenv --》查看全部环境变量
3、设置本地maven
在maven/conf目录下,修改setting.xml文件
A、添加:<localRepository>/home/wqz/repository</localRepository>
B、在mirrors标签下注释掉,否则阿里配置不成功
<!-- <mirror>
<id>maven-default-http-blocker</id>
<mirrorOf>external:http:*</mirrorOf>
<name>Pseudo repository to mirror external repositories initially using HTTP.</name>
<url>http://0.0.0.0/</url>
<blocked>true</blocked>
</mirror>
-->
C、添加阿里镜像地址
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
4、idea中设置本地maven及仓库:
idea--settings--build--build tools--maven--设置maven相关选项--选中override
idea每次创建新项目后,需要通过file-settings--build--build tools--maven设置用户安装的maven选项:
maven home path:/home/wqz/apache-maven-3.9.5
user settings file:/home/wqz/apache-maven-3.9.5/con/settings.xml 选择override
local repository:/home/wqz/repository 选择override
5、麒麟系统下,idea项目即使正确设置了maven,很多以来的jar文件无法从中央仓库中下载到本地仓库,造成maven界面中及pom文件中爆红等错误提示,无法编译
idea--maven--plugins--下对应的jar插件爆红提示:可以从win系统下对应的本地仓库中直接拷贝到麒麟系统下对应仓库即可使用。
问题:org.openjfx:javafx-base:jar:linux-aarch64:21.0.1 failed to transfer from https://maven.aliyun.com/repository/public during a previous attempt. This failure was cached in the local repository and resolution is not reattempted until the update interval of aliyunmaven has elapsed or updates are forced. Original error: Could not transfer artifact org.openjfx:javafx-base:jar:linux-aarch64:21.0.1 from/to aliyunmaven (https://maven.aliyun.com/repository/public): java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: sun.security.ssl.SSLContextImpl$DefaultSSLContext)
问题:org.openjfx:javafx-base:jar:linux-aarch64:21.0.1 failed to transfer from ,
问题:Try to run Maven import with -U flag (force update snapshots)
解决:进入maven仓库官网https://central.sonatype.com查找相应组件如:javafx-base找到对应版本(21.0.1)versions--浏览browse进入对应文件下载页面--下载jar文件,
把下载的jar文件复制到maven本地仓库对应目录下:/home/wqz/repository/org/openjfx/javafx-base/21.0.1 即可,在idea-maven-刷新,就不会报红
注意:需要在pom.xml,module-info中引入相应内容
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-base</artifactId>
<version>21.0.1</version>
</dependency>
requires javafx.base;
6、麒麟自带openjdk17下,maven--lifecycle--install--成功--plugins--javafx:jlink--成功,运行jar或app时出现prism_es2库资源问题:Loading library prism_es2 from resource failed: java.lang.UnsatisfiedLinkError: /home/wqz/.openjfx/cache/21.0.1+6/aarch64/libprism_es2.so: /lib/aarch64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by /home/wqz/.openjfx/cache/21.0.1+6/aarch64/libprism_es2.so)//java.lang.UnsatisfiedLinkError: /home/wqz/.openjfx/cache/21.0.1+6/aarch64/libprism_es2.so: 等
命令查看GLIBC 2.31版本:ldd --version
ldd (Ubuntu GLIBC 2.31-0kylin9.1k20.6) 2.31
Copyright (C) 2020 自由软件基金会。
7、麒麟自带openjdk11下,可以正常运行,但提示Gtk-Message: 11:52:00.137: Failed to load module "canberra-gtk-module" 为gtk2.0库问题,
因为麒麟目前使用gtk3.0代替了gtk2.0,不影响正常程序使用,测试如下:
终端命令安装gtk2.0库:sudo apt-get install libanberra-gtk-module
麒麟系统默认查找库从/usr/lib目录查找,所以在/usr/lib目录下建立软连接测试,
软后通过软连接方式建立文件:sudo ln -s /usr/lib/arrch64-linux-gnu/gtk-2.0/modules/liblibanberra-gtk-module.so /usr/lib/liblibanberra-gtk-module.so
建立软连接后提示:gtk3.0和gtk2.0同时处理不支持
8、版本支持问题:麒麟自带openjdk11下(jdk11+jfx17.0.6),不支持最新版本jfx21,(win下(jdk17+jfx21)支持最新版本),eu.hansolo.titlesfx和com.almasb.fxgl.all版本问题;
Can't extract module name from countries-17.0.37.jar: Unsupported major.minor version 61.0
Can't extract module name from fxgl-io-17.3.jar: Unsupported major.minor version 61.0
Can't extract module name from fxgl-entity-17.3.jar: Unsupported major.minor version 61.0
Can't extract module name from fxgl-core-17.3.jar: Unsupported major.minor version 61.0
Can't extract module name from fxgl-scene-17.3.jar: Unsupported major.minor version 61.0
Can't extract module name from heatmap-17.0.27.jar: Unsupported major.minor version 61.0
Can't extract module name from toolboxfx-17.0.47.jar: Unsupported major.minor version 61.0
Can't extract module name from toolbox-17.0.57.jar: Unsupported major.minor version 61.0
Can't extract module name from tilesfx-17.1.31.jar: Unsupported major.minor version 61.0
Can't extract module name from fxgl-17.3.jar: Unsupported major.minor version 61.0
Can't extract module name from fxgl-gameplay-17.3.jar: Unsupported major.minor version 61.0
解决:选择对应版本即可:
<dependency>
<!-- tilesfx选择对应openjdk11的对应版本 -->
<groupId>eu.hansolo</groupId>
<artifactId>tilesfx</artifactId>
<version>11.48</version>
<exclusions>
<exclusion>
<groupId>org.openjfx</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<!-- tilesfx选择对应openjdk11的对应版本 -->
<groupId>com.github.almasb</groupId>
<artifactId>fxgl</artifactId>
<version>11.17</version>
<exclusions>
<exclusion>
<groupId>org.openjfx</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>