Java Eclipse不允许从另一个工作区访问外部jar中的静态接口方法 有两个eclipse工作区,工作区A和工作区B
在工作区A中,有一个项目具有定义公共静态方法的接口:Java Eclipse不允许从另一个工作区访问外部jar中的静态接口方法 有两个eclipse工作区,工作区A和工作区B,java,eclipse,jar,Java,Eclipse,Jar,在工作区A中,有一个项目具有定义公共静态方法的接口: package workspacea; public interface Foo { public static String sayHello() { return "Hello, world!"; } } 然后,我使用Export将整个项目从工作区A导出到*.jar文件→ JAVA→ JAR文件和默认设置 在工作区B中,类应访问先前定义的静态方法: package workspaceb; import works
package workspacea;
public interface Foo {
public static String sayHello() {
return "Hello, world!";
}
}
package workspaceb;
import workspacea.Foo;
public class Bar {
public static void test() {
String msg = Foo.sayHello();
}
}
Foo.sayHello()代码>未编译:
Unresolved compilation problem:
This static method of interface Foo can only be accessed as Foo.sayHello
根据我的理解,它应该编译(它可以很好地识别Foo
接口)。有趣的是,如果两个项目都位于同一个工作区中,它编译得很好(仍然使用*.jar库,而不是项目依赖项)
Eclipse提供了一个快速修复,它没有任何影响(至少对代码没有影响)
这里发生了什么?为什么代码不编译?这是Eclipse错误吗?如果是的话,有解决办法吗
我正在使用Luna Service Release 2(4.4.2)构建20150219-0600,并在工作区A中使用Java 8,在工作区B中使用Java 7
附加说明:我只能通过使用界面
复制此信息。使用抽象类
,同样的方法也可以工作。问题是由于在工作区B中使用Java-8之前的版本造成的。Eclipse或Java中没有bug,Java 7及以下版本只是不支持接口中的静态方法。Java只是给出了一个误导性的错误,说静态方法可以被引用,尽管它在技术上不可能被引用,因为它在Java 7或更低版本中不可用。我之所以这样做,是因为我创建了一个新的Maven项目,并且默认情况下它将编译器级别设置为1.5
将其切换到1.8并解决了此问题。请参阅:
更改编译器级别并点击OK!!] 将其切换到1.8并解决了此问题
请按照以下步骤操作:
右键单击Java项目
转到属性
Java构建路径
图书馆
JRE系统库
编辑
选择Java1.8
.. 如果你能告诉我你是如何修复它的(例如告诉maven使用java 8)@Alex属性| java构建路径|库|(选择)JRE系统库|编辑|选择环境为java 8,那就太好了