对于我正在处理的项目,这取决于vaadin-6.8.12,我想使用vaadin-server-7.0.6 JAR中包含的Page / JavaScript类。
但是,当我包含vaadin-server时,我在尝试使用Page.getCurrent()方法时会得到一个java.lang.VerifyError。
为了说明这一点,我写了一个小的测试程序,它表现出相同的行为:
import com.vaadin.server.Page;
public class Main
{
public static void main(String[] args)
{
Page page = Page.getCurrent();
System.out.println(page);
}
}
我在文件中设置了类路径(JAR文件和Main.class在同一个文件夹中):
vaadin-6.8.12.jar:vaadin-server-7.0.6.jar:vaadin-shared-7.0.6.jar:vaadin-
shared-deps-1.0.2.jar:vaadin-theme-compiler-7.0.6.jar
然后运行这样的程序:
java -cp $(cat vaadin.classpath):. Main
运行时,我收到以下错误:
Exception in thread "main" java.lang.VerifyError: (class:
com/vaadin/server/Page, method: getJavaScript signature:
()Lcom/vaadin/ui/JavaScript;) Incompatible argument to function
at Main.main(Main.java:7)
但是,如果我颠倒了vaadin-6.8.12和vaadin-server-7.0.6的顺序,我就不会得到java.lang.VerifyError。
我为不同版本的vaadin和vaadin-server尝试了相同的测试,总是与上面的结果相同。
vaadin未在maven POM中列为vaadin-server的依赖关系(反之亦然)。我正在使用JDK版本1.6.0_32。有谁知道这可能导致什么?
非常感谢。
答案 0 :(得分:2)
你不能用这种方式组合Vaadin 6和Vaadin 7。如果要使用Vaadin 7中的功能,则需要迁移整个应用程序以使用Vaadin 7.
如果你想从服务器端执行一些JavaScript,Vaadin 6有Window.executeJavaScript()
方法你可以尝试使用。