【发布时间】:2015-03-25 15:44:49
【问题描述】:
一个简单的例子,Ent.java 使用注解并使用必要的 jar 依赖项进行编译,然后编译 Includer.java,然后导入 Ent.java。
Ent.java:
import javax.persistence.Entity;
import javax.persistence.Table;
@Entity
@Table(name="securities")
public class Ent {}
Includer.java:
public class Includer {
public void f() {
Ent s = new Ent();
}
}
用...编译它
javac -cp C:/apache-tomcat-7.0.59/lib/javax.persistence_2.1.0.v201304241213.jar Ent.java
javac Includer.java
...编译Includer.java时产生以下警告:
.\Ent.class: warning: Cannot find annotation method 'name()' in type 'Table': class file for javax.persistence.Table not found
如果我们添加更多注释当然会发生同样的情况,但似乎只有带参数的注释才会导致这种行为。在编译Includer.java 时将第一次编译的jar 依赖添加到类路径可以解决问题,但不遵循我通常认为的依赖处理方式。由于我对注释很陌生,因此在编译 Includer.java 时,我们需要将 Ent.java 的依赖项添加到类路径中是预期的行为吗(可以说是添加依赖项的依赖项......)或者这可能是一些某种错误或其他某种特殊情况......?本次测试使用编译器版本 javac 1.8.0_31。
【问题讨论】:
标签: java annotations persistence javac