无法在Eclipse中使用Acceleo从UML生成java

时间:2013-11-23 10:34:55

标签: eclipse acceleo

我是Eclipse和Acceleo的新手,我一直在尝试完成First Generator Model Tutorial。我使用的是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。   检查是否已导出其包含的包。

     

和激活器org.eclipse.acceleo.module.sample.Activator for   bundle org.eclipse.acceleo.module.sample无效

     

org.osgi.framework.BundleException:激活器   org.eclipse.acceleo.module.sample.Activator for bundle   org.eclipse.acceleo.module.sample在   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.internal.core.AbstractBundle.start(AbstractBundle.java:300)     在   org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:478)     在   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.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)     在   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)     在   org.eclipse.debug.internal.ui.DebugUIPlugin $ 8.run(DebugUIPlugin.java:1222)     在org.eclipse.core.internal.jobs.Worker.run(Worker.java:53)引起的   by:java.lang.ClassNotFoundException:   无法找到org.eclipse.acceleo.module.sample.Activator   org.eclipse.acceleo.module.sample_1.0.0.qualifier at   org.eclipse.osgi.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(未知来源)at   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.Activator   org.eclipse.acceleo.module.sample_1.0.0.qualifier at   org.eclipse.osgi.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(未知来源)at   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.start(SecureAction.java:478)     在   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.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)     在   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)     在   org.eclipse.debug.internal.ui.DebugUIPlugin $ 8.run(DebugUIPlugin.java:1222)     在org.eclipse.core.internal.jobs.Worker.run(Worker.java:53)

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

感谢任何帮助或反馈。

3 个答案:

答案 0 :(得分: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向导并保留了大部分默认值,然后删除(或重命名)了它在项目中创建的“Activator”类。

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

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

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

答案 1 :(得分:0)

我在干净的开普勒和干净的Luna安装上使用Acceleo 3.5.0时遇到了同样的问题。在Luna Acceleo中,当您选择“加速插件应用程序”时会显示警告。对于运行配置中的Runner。如果您选择“Java应用程序”#39;相反,它适用于开普勒。

一项小小的研究使我得到以下修复' BUG: https://bugs.eclipse.org/bugs/show_bug.cgi?id=419205。修复'我想在Luna中添加一条错误消息告诉我们这个功能不起作用。我在开普勒和Juno中也看到了与Acceleo 3.5完全相同的问题,因此它看起来并不像Luna。

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

  • 切换回Acceleo 3.4或
  • 仅使用' Java Application'被称为独立的'在Eclipse之外运行的文档中。

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

答案 2 :(得分:0)

我通过更新MANIFEST.MF文件中的类路径来纠正此错误:

我添加了projet的bin /文件夹。它现在正常运作。

艾蒂安