2

我是 Eclipse 和 Acceleo 的新手,我一直在尝试完成第一个生成器模型教程。我正在使用 Kepler 4.3 和 Acceleo 3.X。我正在关注从 uml 生成 java 代码的教程。该链接是http://wiki.eclipse.org/Acceleo/Getting_Started。但是当我尝试运行 generate.mtl 文件时,错误日志给了我消息:

Couldn't load class org.eclipse.acceleo.module.sample.main.Generate
from project org.eclipse.acceleo.module.sample

它也给了我警告:

无法加载类 org.eclipse.acceleo.module.sample.main.Generate。检查其包含的包是否已导出。

并且 bundle org.eclipse.acceleo.module.sample 的激活器 org.eclipse.acceleo.module.sample.Activator 无效

org.osgi.framework.BundleException:用于包 org.eclipse.acceleo.module.sample 的激活器 org.eclipse.acceleo.module.sample.Activator 在 org.eclipse.osgi.framework.internal.core.AbstractBundle.loadBundleActivator 无效(AbstractBundle.java:172) 在 org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:679) 在 org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java :381) 在 org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:478) 在 org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:300) 在 org. eclipse.osgi.internal.loader.BundleLoader.setLazyTrigger(BundleLoader.java:263) 在 org.eclipse.osgi.framework.internal.core.BundleHost.loadClass(BundleHost.java:236) 在 org.eclipse.osgi.framework。internal.core.AbstractBundle.loadClass(AbstractBundle.java:1212) 在 org.eclipse.acceleo.common.internal.utils.workspace.AcceleoWorkspaceUtil.getClass(AcceleoWorkspaceUtil.java:544) 在 org.eclipse.acceleo.ide.ui。在 org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2345) 在 org.eclipse.core.internal.resources.Workspace.run( Workspace.java:2327) 在 org.eclipse.acceleo.ide.ui.launching.strategy.AcceleoPluginLaunchingStrategy.launch(AcceleoPluginLaunchingStrategy.java:259) 在 org.eclipse.acceleo.ide.ui.launching.strategy.AcceleoPluginLaunchingStrategy.launch( AcceleoPluginLaunchingStrategy.java:161) 在 org.eclipse.acceleo.internal.ide.ui.launching.AcceleoLaunchDelegate.launch(AcceleoLaunchDelegate.java:51) 在 org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:858) 在 org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:707) 在 org.eclipse.debug.internal.ui。 DebugUIPlugin.buildAndLaunch(DebugUIPlugin.java:1018) at org.eclipse.debug.internal.ui.DebugUIPlugin$8.run(DebugUIPlugin.java:1222) at org.eclipse.core.internal.jobs.Worker.run(Worker.java :53) 原因:java.lang.ClassNotFoundException: org.eclipse.acceleo.module.sample_1.0.0.qualifier 在 org.eclipse.osgi.internal.loader 找不到 org.eclipse.acceleo.module.sample.Activator .BundleLoader.findClassInternal(BundleLoader.java:501) 在 org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:421) 在 org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java :412)在 org.eclipse.osgi.internal.loader.BundleLoader.loadClass( BundleLoader.java:340) 在 org.eclipse.osgi.framework.internal.core.BundleHost.loadClass(BundleHost.java:229) 在 org.eclipse.osgi.framework.internal.core.AbstractBundle.loadBundleActivator(AbstractBundle.java: 165) ... 19 更多根异常:java.lang.ClassNotFoundException: org.eclipse.acceleo.module.sample_1.0.0.qualifier 在 org.eclipse.osgi 找不到 org.eclipse.acceleo.module.sample.Activator .internal.loader.BundleLoader.findClassInternal(BundleLoader.java:501) 在 org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:421) 在 org.eclipse.osgi.internal。loader.BundleLoader.findClass(BundleLoader.java:412) 在 org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107) 在 java.lang.ClassLoader.loadClass(Unknown Source) 在 org.eclipse。 osgi.internal.loader.BundleLoader.loadClass(BundleLoader.java:340) 在 org.eclipse.osgi.framework.internal.core.BundleHost.loadClass(BundleHost.java:229) 在 org.eclipse.osgi.framework.internal。 core.AbstractBundle.loadBundleActivator(AbstractBundle.java:165) 在 org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:679) 在 org.eclipse.osgi.framework.internal.core.BundleHost。 startWorker(BundleHost.java:381) 在 org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:300) 在 org.eclipse.osgi.framework.util.SecureAction。在 org.eclipse.osgi.framework.internal.core.BundleHost.loadClass(BundleHost.java: 236) 在 org.eclipse.acceleo.common.internal.utils.workspace.AcceleoWorkspaceUtil.getClass(AcceleoWorkspaceUtil.java:544) 的 org.eclipse.osgi.framework.internal.core.AbstractBundle.loadClass(AbstractBundle.java:1212)在 org.eclipse.acceleo.ide.ui.launching.strategy.AcceleoLaunchOperation.run(AcceleoLaunchOperation.java:103) 在 org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2345) 在 org.eclipse .core.internal.resources.Workspace.run(Workspace.java:2327) 在 org.eclipse.acceleo.ide.ui.launching.strategy.AcceleoPluginLaunchingStrategy.launch(AcceleoPluginLaunchingStrategy.java:259) 在 org.eclipse.acceleo.ide.ui.launching.strategy.AcceleoPluginLaunchingStrategy.launch(AcceleoPluginLaunchingStrategy.java:161) at org.eclipse.acceleo.internal.ide.ui.launching.AcceleoLaunchDelegate.launch(AcceleoLaunchDelegate.java:51) at org. eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:858) 在 org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:707) 在 org.eclipse.debug.internal.ui。 DebugUIPlugin.buildAndLaunch(DebugUIPlugin.java:1018) at org.eclipse.debug.internal.ui.DebugUIPlugin$8.run(DebugUIPlugin.java:1222) at org.eclipse.core.internal.jobs.Worker.run(Worker.java :53)AcceleoLaunchDelegate.launch(AcceleoLaunchDelegate.java:51) 在 org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:858) 在 org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java: 707) 在 org.eclipse.debug.internal.ui.DebugUIPlugin$8.run(DebugUIPlugin.java:1222) 的 org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(DebugUIPlugin.java:1018)。 core.internal.jobs.Worker.run(Worker.java:53)AcceleoLaunchDelegate.launch(AcceleoLaunchDelegate.java:51) 在 org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:858) 在 org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java: 707) 在 org.eclipse.debug.internal.ui.DebugUIPlugin$8.run(DebugUIPlugin.java:1222) 的 org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(DebugUIPlugin.java:1018)。 core.internal.jobs.Worker.run(Worker.java:53)debug.internal.ui.DebugUIPlugin$8.run(DebugUIPlugin.java:1222) 在 org.eclipse.core.internal.jobs.Worker.run(Worker.java:53)debug.internal.ui.DebugUIPlugin$8.run(DebugUIPlugin.java:1222) 在 org.eclipse.core.internal.jobs.Worker.run(Worker.java:53)

我已将 [comment @main/] 放在模板行下方并执行教程中的所有步骤,我真的不知道问题出在哪里。

我将不胜感激任何帮助或反馈。

4

3 回答 3

0

我在干净的 Kepler 和干净的 Luna 安装上使用 Acceleo 3.5.0 时遇到了完全相同的问题。在 Luna 中,当您在运行配置中为 Runner 选择“Acceleo 插件应用程序”时,Acceleo 会显示警告。如果您选择“Java 应用程序”,则它适用于 Kepler。

一些研究使我发现了以下“固定”错误: https ://bugs.eclipse.org/bugs/show_bug.cgi?id=419205 。我猜的“修复”是在 Luna 中添加一条错误消息,告诉我们这个功能不起作用。在 Acceleo 3.5 中,我在 Kepler 和 Juno 中也看到了完全相同的问题,所以它似乎根本不是 Luna 特有的。

我发现的唯一解决方法是:

  • 切换回 Acceleo 3.4 或
  • 仅使用文档中称为“独立”的“Java 应用程序”,因为它在 Eclipse 之外运行。

独立的问题是你失去了 Acceleo 调试器和解释器的所有强大功能,而且你有更长的等待时间来测试你的模板。

于 2014-09-01T00:01:00.893 回答
0
java.lang.ClassNotFoundException: org.eclipse.acceleo.module.sample.Activator cannot be found by org.eclipse.acceleo.module.sample_1.0.0.qualifier

我能想到的最可能的原因是您使用了该File > New Plug-in Project向导并保留了大部分默认值,但后来删除(或重命名)了它在您的项目中创建的“激活器”类。

您的META-INF/MANIFEST.MF项目文件应包含如下所示的一行:

Bundle-Activator: org.eclipse.acceleo.module.sample.Activator

如果是这样,它很可能会在该行显示警告或错误。您可以完全删除该行,或者确保您确实有一个具有该限定名称的插件激活器。

于 2013-11-25T08:19:16.277 回答
0

我通过更新 MANIFEST.MF 文件中的类路径更正了这个错误:

我添加了项目的 bin/ 文件夹。它现在可以正常工作。

艾蒂安

于 2014-12-20T16:43:41.680 回答