Scala 在SBT中使用宏的问题

Scala 在SBT中使用宏的问题,scala,macros,sbt,Scala,Macros,Sbt,假设您有两个SBT项目,一个称为A,另一个称为B A有一个名为macro的子项目,它遵循与此处所示完全相同的模式()。换句话说,一个宏有一个子项目宏和一个公开宏的包(我们称之为macrotools)。现在,A和B两个项目都使用macrotools包(A和B是严格独立的项目,B在SBT中通过依赖关系使用A,A使用本地发布) 现在,使用A的macrotools包很好,一切正常。但是,当B使用macrotools包时,会发生以下错误 java.lang.IllegalAccessError: trie

假设您有两个SBT项目,一个称为A,另一个称为B

A有一个名为macro的子项目,它遵循与此处所示完全相同的模式()。换句话说,一个宏有一个子项目宏和一个公开宏的包(我们称之为macrotools)。现在,A和B两个项目都使用macrotools包(A和B是严格独立的项目,B在SBT中通过依赖关系使用A,A使用本地发布)

现在,使用A的macrotools包很好,一切正常。但是,当B使用macrotools包时,会发生以下错误

java.lang.IllegalAccessError: tried to access method com.monetise.waitress.types.Married$.<init>()V from class com.monetise.waitress.types.RelationshipStatus$
如您所见,当我使用whats注释时,代码运行良好(宏的任务是用ADT中的所有case对象填充集合)。当我使用宏版本时,即
SealedContents.values[RelationshipStatus]
是当我点击
java.lang.IllegalAccessError

编辑

以下是包含这些项目的回购协议

请注意,我必须做一些更改,这是我之前忘记的。因为另一个项目也需要依赖于宏,所以下面两行禁用宏发布的命令已被注释掉

publish := {},
publishLocal := {}
在build.scala中。还要注意,这是一个运行时错误,而不是编译时错误

编辑2
在此处创建了github问题

此问题与SBT无关。看起来您正在使用的宏有一个bug。按照链接查看修复程序。

如果您可以将SBT项目发布到GitHub并提供一个复制场景(例如,“do
SBT compile
,您将面临编译错误),我可以看看发生了什么。@EugeneBurmako,项目已经放在GitHub上,请检查编辑。请注意,这些是运行时错误,而不是编译错误。代码编译得很好,只是当您尝试运行它时,您遇到了问题谢谢!我会尽快去看一看。
publish := {},
publishLocal := {}