java - 混合 Groovy + Java 项目导致字符串语法冲突

标签 java string groovy compiler-errors

我有一个包含 Java 和 Groovy 文件的项目,想要将它们编译成 .class。

我的 Groovy 类使用 Java 类。 Java 类之一包含注释

@ConfigPartDescriptor(
    name = "Mail Service ${jndiName}"
)
@XmlRootElement(name = "mbean")
@XmlAccessorType(XmlAccessType.NONE)
public final class MailServiceBean extends MBeanJaxbBase<MailServiceBean> implements IConfigFragment, Origin.Wise {

这对于 Java 来说没问题,但是 Groovy 尽管没有编译该文件,却提示道:

Failed to execute goal org.codehaus.gmaven:gmaven-plugin:1.5:compile (compile-groovy-classes) on project AsMigrator: startup failed:
file:/home/ondra/work/AS/Migration/git-repo/src/main/java/org/jboss/loom/migrators/_groovy/TestJaxbBean.groovy: 20: Expected 'Mail Service $jndiName' to be an inline constant of type java.lang.String in @org.jboss.loom.spi.ann.ConfigPartDescriptor
@ line 20, column 12.
name = "Mail Service ${jndiName}"

使用 Maven GMaven 插件。 (Eclipse Groovy 编译器在同样的事情上失败了。)

我的猜测是 Groovy 编译器处理注释,并看到 ${...},它创建一个 GroovyString 而不是 String 。然后类型检查失败。

如何解决这个问题?我可以使用不同的语法,例如%{...} 但我不想这样做。

最佳答案

您是否尝试过单引号,这样 Groovy 就不会对其进行模板化?

@ConfigPartDescriptor( name = 'Mail Service ${jndiName}' )

关于java - 混合 Groovy + Java 项目导致字符串语法冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17103561/

相关文章:

java - 将额外文件源控制到已创建的存储库(例如二进制文件)

c++ - 为什么不在 cstring.h 中的 strcmp 处使用常量指针

java - 为什么groovy给每个类添加打印方法?

PostgreSQL 中的字符串操作

groovy - Spring Boot groovy编译错误: Unexpected token @ @ line 45

groovy - 重新发布 gradle 工件

java - 使用 ExecutorService 执行任务 : Can I submit task within another task?

java - 使用其值获取接口(interface)常量名称

java - GWT - 基于浏览器的条件编译

string - 如何在 lisp 中输出不带引号且不返回任何内容的字符串?