在Ubuntu 18.04上运行Eclipse-CDT会导致java.lang.ClassNotFoundException

时间:2018-10-22 11:54:04

标签: c++ eclipse ubuntu eclipse-cdt

我正在通过Oracle VirtualBox运行Ubuntu 18.04的虚拟机。 对于一个C ++项目,我需要Eclipse(包括cdt)。因此,我在控制台上运行了以下语句:

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   -----------------------------------------!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 ++的绝对入门者。我不知道什么会导致这个问题。有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

我发现在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软件包中使用的软件包相同。我们尝试了一些不同的方法来强制安装新旧包装等,但本作包装不快和手动提取物只是工作(TM)。