我正在尝试使用带有this库的Scala宏注释。
我在src/main/resources/avsc/FriendRequestAcceptedGson.avsc
我试图在我的代码中引用它,如下所示:
@AvroTypeProvider("/avsc/FriendRequestAcceptedGson.avsc")
@AvroRecord
case class FriendRequestAcceptedGson()
这是我得到的错误:
[error] /home/lee/Code/bigdata-friends/java/etl/src/main/scala/com/mxit/bd/friends/etl/Runner.scala:64: exception during macro expansion:
[error] java.io.FileNotFoundException: /avsc/FriendRequestAcceptedGson.avsc (No such file or directory)
[error] at java.io.FileInputStream.open(Native Method)
[error] at java.io.FileInputStream.<init>(FileInputStream.java:146)
[error] at org.codehaus.jackson.JsonFactory.createJsonParser(JsonFactory.java:504)
[error] at org.apache.avro.Schema$Parser.parse(Schema.java:922)
[error] at com.julianpeeters.avro.annotations.util.SchemaParser$.getSchema(SchemaParser.scala:20)
[error] at com.julianpeeters.avro.annotations.AvroTypeProviderMacro$.impl(TypeProviderMacro.scala:23)
[error] @AvroTypeProvider("/avsc/FriendRequestAcceptedGson.avsc")
答案 0 :(得分:1)
资源被编译到您的JAR文件中。您必须使用ClassLoader找到它们,而不是在文件系统中。 java.io.FIle类只知道如何查看文件系统。现在,如果您尝试打开源文件(在部署JAR时可能不存在),则将取决于当前工作目录相对于文件的位置。可能它位于根部,因此您需要使用的路径是完全相对的路径:src/main/resources/avsc/FriendRequestAcceptedGson.avsc