【问题标题】:maven dependencies in eclipse4 rcp projecteclipse4 rcp项目中的maven依赖项
【发布时间】:2018-05-30 00:06:45
【问题描述】:

我创建了一个名为 base 的 eclipse 4 应用程序项目,并使用它的 base.product 运行它。在使这个项目成为一个 maven 项目后,我向 apache commons-io 库添加了一个依赖项,以便使用这样的文件函数

btnNewButton.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseDown(MouseEvent e) {
            System.out.println("se presiono "+btnNewButton.getText());
            File file = new File("mi archivossss.txt");

            try {
                FileUtils.writeStringToFile(file, "prueba de archvio");
            } catch (IOException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
        }
    });

当我尝试运行该项目时,我收到以下异常:

java.lang.NoClassDefFoundError: org/apache/commons/io/FileUtils
at base.parts.PrincipalPart$1.mouseDown(PrincipalPart.java:40)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:192)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4353)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1061)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4172)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3761)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1151)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1032)
at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:148)
at org.eclipse.e4.ui.internal.workbench.swt.E4Application.start(E4Application.java:164)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:382)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:236)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:648)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:603)
at org.eclipse.equinox.launcher.Main.run(Main.java:1465)
at org.eclipse.equinox.launcher.Main.main(Main.java:1438)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.io.FileUtils cannot be found by base_1.0.0.qualifier
    at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:423)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:336)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:328)
    at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:160)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 25 more

因此,我手动配置了依赖项并且这有效,所以我知道这是与 maven 依赖项相关的配置问题。但是不知道怎么解决。

【问题讨论】:

  • 你是如何运行这个项目的?
  • 我的 project.product 文件上的右键并作为 Eclipse 应用程序运行
  • eclipse 是否在项目中显示“Maven Dependencies”库?
  • 是的,eclispse 显示它并下载了库。

标签: maven eclipse-rcp


【解决方案1】:

确保您的 Maven pom.xml 中有正确的依赖项:

<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.5</version>
</dependency>

确保 m2e 插件已安装在 Eclipse 中。

在 Eclipse 中,选择您的项目文件夹并右键单击。转到弹出窗口中的 Maven 选项,然后在下一个对话框中选择“更新项目”,然后选择“确定”。这就是 Maven 将类放在您机器上的类路径中的方式。

【讨论】:

    【解决方案2】:

    这里的关键是您将这个项目作为 Eclipse 应用程序运行。

    然后假设您尝试添加 maven 依赖项的项目是一个 Eclipse 插件。

    这不起作用,因为 m2e 无法处理插件依赖项。

    为了能够在 Eclipse 中运行您的产品(即 Run as... > Eclipse Application),您需要将依赖项添加为 Plug-in Dependencies来自插件清单 (META-INF/MANIFEST.MF)。

    或者,您可以使用 Tycho 构建您的产品。

    【讨论】:

      猜你喜欢
      • 2018-10-20
      • 2015-01-23
      • 1970-01-01
      • 2014-05-25
      • 2019-02-22
      • 1970-01-01
      • 2011-01-15
      • 2013-06-22
      • 1970-01-01
      相关资源
      最近更新 更多