银河麒麟系统下maven安装及环境变量设置

发布时间 2023-11-10 17:50:14作者: 麒麟正青春

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>