我試圖創建一個斯卡拉宏象生成代碼:斯卡拉宏 - 錯誤引用類符號「未發現:價值<class>」
val x = new com.foo.MyClass()
其中com.foo.MyClass
肯定是在類路徑在編譯時和運行在項目中使用宏的時間。
我使用以下c.Tree
生成代碼: Apply(Select(New(Ident(TermName("com.foo.MyClass"))), termNames.CONSTRUCTOR), List())
打印show
和showRaw
命令的輸出表明,生成正確的代碼,但它似乎com.foo.MyClass
要麼不上在宏擴展期間或在編譯期間立即之後。
我看到在宏觀的使用點生成以下錯誤(宏IMPL本身是在一個單獨的項目中定義):
[ERROR] /src/main/java/foo/MyWhatever.scala:10: not found: value com.foo.MyClass
[ERROR] MyMacros.someMacro(someInput)
[ERROR]
爲什麼沒有找到在類路徑這類即使它是同一個項目中的Java文件?我試過-Ymacro-debug-verbose
和com.foo.MyClass
不在輸出中,但是一堆其他的Java類庫都是。我無法找到類擴展的類路徑上的類模式。
感謝您的幫助!