【问题标题】:Generating Xtext projects programmatically on Xtext version 2.17.0 produces error在 Xtext 版本 2.17.0 上以编程方式生成 Xtext 项目会产生错误
【发布时间】:2019-04-08 21:11:05
【问题描述】:

我正在使用 Xtext 版本 2.17.0 (Java 11) 以编程方式生成 Xtext 项目。整个过程是:

  1. 在我自己的 maven 项目中,我以编程方式生成这些 Xtext 项目。
  2. 生成项目后,我将语法写入运行时项目并在父 Xtext 项目上运行 mvn compile,以生成语法工件(例如通过在 Eclipse IDE 中运行 Wme2 工作流)。
  3. 我将 org.eclipse.ui.console;bundle-version="3.8.100" 添加到 ui 项目的清单中。然后还有一个 jar 到 Bundle-ClassPath,所以最终 Manifest 是这样的:
Bundle-ManifestVersion: 2
Bundle-Name: org.mealy.ui
Bundle-Vendor: My Company
Bundle-Version: 1.0.0.qualifier
Bundle-SymbolicName: org.mealy.ui; singleton:=true
Bundle-ActivationPolicy: lazy
Require-Bundle: org.mealy,org.mealy.ide,org.eclipse.xtext.ui,org.eclipse
 .xtext.ui.shared,org.eclipse.xtext.ui.codetemplates.ui,org.eclipse.ui.e
 ditors;bundle-version="3.5.0",org.eclipse.ui.ide;bundle-version="3.5.0"
 ,org.eclipse.ui,org.eclipse.compare,org.eclipse.xtext.builder,org.eclip
 se.xtext.xbase.lib;bundle-version="2.14.0",org.eclipse.xtend.lib;bundle
 -version="2.14.0";resolution:=optional,org.eclipse.ui.console;bundle-ve
 rsion="3.8.100"
Import-Package: org.apache.log4j
Bundle-RequiredExecutionEnvironment: JavaSE-11
Automatic-Module-Name: org.mealy.ui
Export-Package: org.mealy.ui.internal,org.mealy.ui.quickfix,org.mealy.ui
 .contentassist
Bundle-Activator: org.mealy.ui.internal.MealyActivator
Bundle-ClassPath: lib/mealyMachine-1.0-SNAPSHOT.jar,
 .
  1. 之后我会生成一些源代码文件等。
  2. 然后我在父 Xtext 项目上手动运行 mvn 包,以便构建所有项目并获取代表 Eclipse 插件和语言服务器的 jar。

但是在 Xtext 的 2.17.0 版本(使用 Java 11)上运行最后一点时,会将某些内容添加到 ui Xtext 项目的 MANIFEST.MF 中,并且 mvn 包失败并出现以下错误:

[ERROR] Failed to execute goal org.eclipse.tycho:tycho-p2-plugin:1.3.0:p2-metadata-default (default-p2-metadata-default) on project org.mealy.ui: Execution default-p2-metadata-default of goal org.eclipse.tycho:tycho-p2-plugin:1.3.0:p2-metadata-default failed. IllegalArgumentException -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.eclipse.tycho:tycho-p2-plugin:1.3.0:p2-metadata-default (default-p2-metadata-default) on project org.mealy.ui: Execution default-p2-metadata-default of goal org.eclipse.tycho:tycho-p2-plugin:1.3.0:p2-metadata-default failed.
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:212)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863)
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:199)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
    at org.codehaus.classworlds.Launcher.main(Launcher.java:47)
Caused by: org.apache.maven.plugin.PluginExecutionException: Execution default-p2-metadata-default of goal org.eclipse.tycho:tycho-p2-plugin:1.3.0:p2-metadata-default failed.
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:145)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207)
    ... 21 more
Caused by: java.lang.IllegalArgumentException
    at org.eclipse.tycho.p2.impl.publisher.P2GeneratorImpl.getCanonicalArtifact(P2GeneratorImpl.java:206)
    at org.eclipse.tycho.p2.impl.publisher.P2GeneratorImpl.generateMetadata(P2GeneratorImpl.java:148)
    at org.eclipse.tycho.plugins.p2.P2MetadataMojo.attachP2Metadata(P2MetadataMojo.java:157)
    at org.eclipse.tycho.plugins.p2.P2MetadataMojo.execute(P2MetadataMojo.java:116)
    at org.eclipse.tycho.plugins.p2.P2MetadataDefaultMojo.execute(P2MetadataDefaultMojo.java:33)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
    ... 22 more

UI Xtext 项目的 Manifest.mf 最后看起来是这样的:

Bundle-ManifestVersion: 2
Bundle-Name: org.mealy.ui
Bundle-Vendor: My Company
Bundle-Version: 1.0.0.qualifier
Bundle-SymbolicName: org.mealy.ui; singleton:=true
Bundle-ActivationPolicy: lazy
Require-Bundle: org.mealy,org.mealy.ide,org.eclipse.xtext.ui,org.eclipse
 .xtext.ui.shared,org.eclipse.xtext.ui.codetemplates.ui,org.eclipse.ui.e
 ditors;bundle-version="3.5.0",org.eclipse.ui.ide;bundle-version="3.5.0"
 ,org.eclipse.ui,org.eclipse.compare,org.eclipse.xtext.builder,org.eclip
 se.xtext.xbase.lib;bundle-version="2.14.0",org.eclipse.xtend.lib;bundle-version="2.14.0";bundle
 -version="2.14.0";resolution:=optional,org.eclipse.ui.console;bundle-ve
 rsion="3.8.100",
 org.eclipse.ui.editors,
 org.eclipse.xtext.xbase.lib;bundle-version="2.14.0",
 org.eclipse.xtext.ui.shared
Import-Package: org.apache.log4j
Bundle-RequiredExecutionEnvironment: JavaSE-11
Automatic-Module-Name: org.mealy.ui
Export-Package: org.mealy.ui.internal,org.mealy.ui.quickfix,org.mealy.ui
 .contentassist,
 org.mealy.ui.contentassist
Bundle-Activator: org.mealy.ui.internal.MealyActivator
Bundle-ClassPath: lib/mealyMachine-1.0-SNAPSHOT.jar,
 .

使用 Xtext 2.16.0 和 Java 8 运行相同的代码不会产生此类错误,并且在运行列表中的第 5 点时不会向清单中写入任何内容。

可能是什么问题?

【问题讨论】:

  • 如何一次只更改一个变量以查看这是否与 Xtext 2.17 或 Java 11 相关。另外:您是否尝试过 tycho 1.4
  • 除此之外:您是否检查过 pom 和 manifest 是否适合?
  • => 能否请您在 github 上提供一个显示问题的示例项目
  • 也知道是什么东西。生成器编写清单,因此该代码中可能存在错误,但我们再次需要详细信息
  • EG 清单中的换行符看起来很假

标签: xtext java-11


【解决方案1】:

看起来您确实遇到了一个错误。作为一种解决方法,您可以尝试禁用清单合并

            eclipsePlugin = {
                enabled = true
                manifest = {
                    merge = false
                }
            }

【讨论】:

  • 这有帮助。非常感谢克里斯蒂安·迪特里希!有没有办法以编程方式将此片段添加到 wme2 工作流程?是否可以根据 .wme2 文件将 java 对象从 wme2 工作流中取出,然后更改此配置?
  • 我不知道向导中有一个选项。也许您可以为此提出增强请求。
猜你喜欢
  • 2016-01-15
  • 1970-01-01
  • 2019-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多