如何在parrot系统中改用jdk7

由于近期编译android6源码,发现其依赖于jdk7,(parrot已经用上了最新的10),不知能否改用jdk7?
此外对于i386相关的依赖是否有办法在parrot上安装。(ubuntu下可以使用)

当前parrot版本:4.2 64位

dpkg --add-architecture i386    

可以开启i386的支持

恩,之前开启过了,但相关依赖却无法定位
比如libreadline6-dev:i386

知道了,之前忘了update了

现在解决了吗

i386依赖没问题了,但jdk7还有问题

下载个jdk7安装后找到路径, 或者是解压版本的自己自定义路径,我这个是jdk8的配置。

先用命令新增加一项: update-alternatives --install,然后配置选择新配置的即可,
命令可用–help看下简要帮助。或者网上参考一下其它用法

$sudo update-alternatives --config java
There are 4 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                            Priority   Status
------------------------------------------------------------
  0            /usr/lib/jvm/java-10-openjdk-amd64/bin/java      1101      auto mode
  1            /usr/lib/jvm/java-10-openjdk-amd64/bin/java      1101      manual mode
  2            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   1081      manual mode
  3            /usr/lib/jvm/java-9-openjdk-amd64/bin/java       1091      manual mode
* 4            /usr/lib/jvm/jdk18/bin/java                      1100      manual mode

Press <enter> to keep the current choice[*], or type selection number: 

以及

$sudo update-alternatives --config javac
There are 4 choices for the alternative javac (providing /usr/bin/javac).

  Selection    Path                                          Priority   Status
------------------------------------------------------------
  0            /usr/lib/jvm/java-10-openjdk-amd64/bin/javac   1101      auto mode
  1            /usr/lib/jvm/java-10-openjdk-amd64/bin/javac   1101      manual mode
  2            /usr/lib/jvm/java-8-openjdk-amd64/bin/javac    1081      manual mode
  3            /usr/lib/jvm/java-9-openjdk-amd64/bin/javac    1091      manual mode
* 4            /usr/lib/jvm/jdk18/bin/javac                   1100      manual mode

Press <enter> to keep the current choice[*], or type selection number: 

我只配置了这两个,查看所有 update-alternatives --get-selections 找JAVA开头的,不一定都需要。

后期如果打开某些JAVA程序出异常用不了,就是全恢复到包管理器安装的最高版本再试试。别问我这个坑我跨了多久,更不用问我是怎么知道的这个坑 :joy::joy::joy:

1 个赞

我是卡在了安装上;
本来打算安装openjdk-7-jdk,但它需要openjdk-7-jre支持,
然后在下载jre安装,结果需要jre-headless支持。
安装jre-headless时需要tzdata-java相对应的低版本,于是先降了版本(实际上只有低版本的tzdata才有tzdata-java);
然后其又于本地系统自带的jre8-headless相冲突;
于是想到卸载jre8-headless,又出现这个情况:

正在读取软件包列表… 完成
正在分析软件包的依赖关系树
正在读取状态信息… 完成
有一些软件包无法被安装。如果您用的是 unstable 发行版,这也许是
因为系统无法达到您要求的状态造成的。该版本中可能会有一些您需要的软件
包尚未被创建或是它们已被从新到(Incoming)目录移出。
下列信息可能会对解决问题有所帮助:

下列软件包有未满足的依赖关系:
maltego-teeth : 依赖: maltegoce 或
maltego 但是它将不会被安装
E: 错误,pkgProblemResolver::Resolve 发生故障,这可能是有软件包被要求保持现状的缘故。

那就直接找ORACLE的JDK压缩包吧,解压直接使用,即使不配置到系统环境里面也可以单独做为WEB中间件的引用目录。 在你的工具启动脚本启动时调用JAVA前的某个必需经过的脚本里面EXPORT一下JAVA_HOME就好了,可以参考TOMCAT的解压部署方法.

参考这个链接里面红色的两行自定义路径

export JAVA_HOME=/usr/lib/jvm/java-6-sun 
export JRE_HOME=/usr/lib/jvm/java-6-sun/jre 

另外,你的方法可以再尝试下在 dpkg -i 已有的软件包.deb 之后再用 apt-get -f install 命令来补全依赖包。

1 个赞

总结一下:
首先是对i386的支持:

sudo dpkg --add-architecture i386
sudo apt update

然后是jdk7的安装与配置:
在这里下载Oracle jdk包
然后解压拷贝到自己的路径(如:/usr/lib/jvm/jdk7)

sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk7/bin/java 300
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk7/bin/javac 300
sudo update-alternatives --install /usr/bin/javah javah /usr/lib/jvm/jdk7/bin/javah 300
sudo update-alternatives --install /usr/bin/jar jar /usr/lib/jvm/jdk7/bin/jar 300

然后就是配置本地jdk使用版本了

sudo update-alternatives --config java
There are 3 choices for the alternative java (providing /usr/bin/java).

Selection Path Priority Status

  • 0 /usr/lib/jvm/java-10-openjdk-amd64/bin/java 1101 auto mode
    1 /usr/lib/jvm/java-10-openjdk-amd64/bin/java 1101 manual mode
    2 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1081 manual mode
    3 /usr/lib/jvm/jdk7/bin/java 300 manual mode

Press to keep the current choice[*], or type selection number: 3
update-alternatives: using /usr/lib/jvm/jdk7/bin/java to provide /usr/bin/java (java) in manual mode

和javac

sudo update-alternatives --config javac
There are 2 choices for the alternative javac (providing /usr/bin/javac).

Selection Path Priority Status

  • 0 /usr/lib/jvm/java-10-openjdk-amd64/bin/javac 1101 auto mode
    1 /usr/lib/jvm/java-10-openjdk-amd64/bin/javac 1101 manual mode
    2 /usr/lib/jvm/jdk7/bin/javac 300 manual mode

Press to keep the current choice[*], or type selection number: 2
update-alternatives: using /usr/lib/jvm/jdk7/bin/javac to provide /usr/bin/javac (javac) in manual mode

结果:

java -version
java version “1.7.0_80”
Java™ SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot™ 64-Bit Server VM (build 24.80-b11, mixed mode)
javac -version
javac 1.7.0_80

至于openjdk-7的话,暂时就只有放一放了。
这是我根据@Akira和@lee配置的方法,谢谢指导
其它参考文档:
https://blog.csdn.net/jiuyueguang/article/details/9350857

1 个赞

服务器资源由ZeptoVM赞助

Partners Wiki Discord