【问题标题】:Running Eclipse-CDT on Ubuntu 18.04 causes java.lang.ClassNotFoundException在 Ubuntu 18.04 上运行 Eclipse-CDT 会导致 java.lang.ClassNotFoundException
【发布时间】:2019-03-26 11:49:16
【问题描述】:

我正在通过 Oracle VirtualBox 运行 Ubuntu 18.04 的虚拟机。 我需要 Eclipse(包括 cdt)用于 c++ 项目。所以我在控制台上运行了以下语句:

sudo apt-get install eclipse eclipse-cdt g++

然后我等到它完成安装。之后,我尝试运行Eclipse,导致如下错误:

发生了错误。看看日志文件 /home/matthias/.eclipse/org.eclipse.platform_3.8_155965261/configuration/1540208856928.log

所以,我检查了日志文件。上面写着:

!SESSION 2018 年 10 月 22 日星期一 13:38:43 CEST ----------------------------------------- !ENTRY org.eclipse.equinox.launcher 4 0 2018-10-22 13:38:43.262 !消息 启动 Eclipse 平台时出现异常:!STACK java.lang.ClassNotFoundException: org.eclipse.core.runtime.adaptor.EclipseStarter 在 java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:466) 在 java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:566) 在 java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499) 在 org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:626) 在 org.eclipse.equinox.launcher.Main.basicRun(Main.java:584) 在 org.eclipse.equinox.launcher.Main.run(Main.java:1438) 在 org.eclipse.equinox.launcher.Main.main(Main.java:1414)

不幸的是,我是 Ubuntu 和 c++ 的绝对初学者。我不知道是什么导致了这个问题。有人可以帮帮我吗?

【问题讨论】:

  • 我建议直接从here 网站下载最新版本的 eclipse cdt。
  • 许多安装指南都推荐手动下载/安装方法。使用 snap 也越来越受欢迎:snap install eclipse

标签: c++ eclipse ubuntu eclipse-cdt


【解决方案1】:

我发现在 Ubuntu18.04 上这是由于 packaging problem (在有才华的同事的帮助下调试的)。解决方法是从旧的 libequinox-osgi-java_3.8.1-8 包中手动安装文件,以保持打包愉快。

  1. 找到并获取 .deb 文件
  2. 检查包裹内容与系统是否有重叠
  3. 手动将 deb 提取到“/”中

命令:

$ cd /tmp
$ wget http://archive.ubuntu.com/ubuntu/pool/universe/e/eclipse/libequinox-osgi-java_3.8.1-8_all.deb

$ dpkg -c /tmp/libequinox-osgi-java_3.8.1-8_all.deb
$ dpkg -L libequinox-osgi-java

$ cd /
$ sudo dpkg -x /tmp/libequinox-osgi-java_3.8.1-8_all.deb

注意事项:

这里我们看到命令显示 eclipse 依赖 eclipse-rcp,它依赖于 libequinox-osgi-java (>= 3.9.1),这些都安装好了:

$ lsb_release -rc
Release:        18.04
Codename:       bionic

$ apt-rdepends eclipse 2>&1 | egrep '^eclipse-rcp|libequinox-osgi-java'
eclipse-rcp
  Depends: libequinox-osgi-java (>= 3.9.1)
libequinox-osgi-java

$ dpkg-query -W eclipse eclipse-rcp libequinox-osgi-java
eclipse 3.8.1-11
eclipse-rcp     3.8.1-11
libequinox-osgi-java    3.9.1-1

这些命令表明,开箱即用的 eclipse 固执地坚持加载旧的 osgi_3.8.1.dist.jar,尽管无法统计或打开它:

$ strace -f -e trace=file /usr/lib/eclipse/eclipse -debug -clean -initialize 2>&1 |
    egrep '^Framework.located|file:.*osgi_3.*jar|stat.*osgi_3.*jar'
[pid 117096] stat("/usr/lib/eclipse/plugins/org.eclipse.osgi_3.8.1.dist.jar", 0x7f4f0ca95540) = -1 ENOENT (No such file or directory)
[pid 117096] stat("/usr/lib/eclipse/plugins/org.eclipse.osgi_3.8.1.dist.jar", 0x7f4f0ca954c0) = -1 ENOENT (No such file or directory)
[pid 117096] stat("/usr/lib/eclipse/plugins/org.eclipse.osgi_3.8.1.dist.jar", 0x7f4f0ca95550) = -1 ENOENT (No such file or directory)
[pid 117096] stat("/usr/lib/eclipse/plugins/org.eclipse.osgi_3.8.1.dist.jar", 0x7f4f0ca954d0) = -1 ENOENT (No such file or directory)
Framework located:
    file:/usr/lib/eclipse/plugins/org.eclipse.osgi_3.8.1.dist.jar
...

较旧的软件包恰好与 Ubuntu16.04 eclipse 软件包中使用的软件包相同。我们尝试了几种不同的方法来强制安装较旧和较新的软件包等,但这使得打包不愉快并且手动提取 Just Worked(tm)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-04
    • 2019-05-31
    • 2020-09-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多