2011-09-07 134 views
0

从Play 1.2.1升级到1.2.3时,出现一些编译错误。例如:WsAsync.newRequest现在需要两个参数而不是一个参数。向后兼容性play-1.2.3

玩1.2.3有两个玩罐子:Play.jar和play-1.2.3.jar。 Play.jar似乎有newRequest的早期版本,并且如果两个jar都添加到eclipse中的构建路径中,则不存在编译错误。但是当我运行播放它似乎只使用play-1.2.3.jar。我甚至试图将play.jar复制到应用程序库目录中而不解决问题。

有人可以告诉我如何使用两个玩罐来获得向后兼容性吗?

Neneath从play classpath输出:

[email protected]:/disk2/dba/lib$ /disk2/play-1.2.3/play classpath --%test-hh 
~  _   _ 
~ _ __ | | __ _ _ _| | 
~ | '_ \| |/ _' | || |_| 
~ | __/|_|\____|\__ (_) 
~ |_|   |__/ 
~ 
~ play! 1.2.3, http://www.playframework.org 
~ framework ID is test-hh 
~ 
~ Computed classpath is: 
~ 
['/disk2/dba/lib/conf', '/disk2/play-1.2.3/framework/play-1.2.3.jar', '/disk2/play-1.2.3/modules/testrunner/lib/play-testrunner.jar', '/disk2/play-1.2.3/framework/lib/hibernate-core-3.6.1.Final.jar', '/disk2/play-1.2.3/framework/lib/activation-1.1.1.jar', '/disk2/play-1.2.3/framework/lib/commons-beanutils-1.8.3.jar', '/disk2/play-1.2.3/framework/lib/javassist-3.9.0.GA.jar', '/disk2/play-1.2.3/framework/lib/jj-simplecaptcha.jar', '/disk2/play-1.2.3/framework/lib/javax.inject-1.0.jar', '/disk2/play-1.2.3/framework/lib/hibernate-jpa-2.0-api-1.0.0.Final.jar', '/disk2/play-1.2.3/framework/lib/commons-email-1.2.jar', '/disk2/play-1.2.3/framework/lib/groovy-all-1.7.7.jar', '/disk2/play-1.2.3/framework/lib/jj-wikitext.jar', '/disk2/play-1.2.3/framework/lib/log4j-1.2.15.jar', '/disk2/play-1.2.3/framework/lib/jj-textile.jar', '/disk2/play-1.2.3/framework/lib/dom4j-1.6.1.jar', '/disk2/play-1.2.3/framework/lib/ehcache-core-2.0.0.jar', '/disk2/play-1.2.3/framework/lib/ivy-2.2.0.jar', '/disk2/play-1.2.3/framework/lib/signpost-core-1.2.jar', '/disk2/play-1.2.3/framework/lib/commons-collections-3.2.1.jar', '/disk2/play-1.2.3/framework/lib/slf4j-log4j12-1.6.1.jar', '/disk2/play-1.2.3/framework/lib/jamon-2.7.jar', '/disk2/play-1.2.3/framework/lib/postgresql-9.0.jar', '/disk2/play-1.2.3/framework/lib/antlr-2.7.6.jar', '/disk2/play-1.2.3/framework/lib/asm-all-3.3.1.jar', '/disk2/play-1.2.3/framework/lib/mysql-connector-java-5.1.13.jar', '/disk2/play-1.2.3/framework/lib/jj-imaging.jar', '/disk2/play-1.2.3/framework/lib/xstream-1.3.jar', '/disk2/play-1.2.3/framework/lib/commons-logging-1.1.1.jar', '/disk2/play-1.2.3/framework/lib/joda-time-1.6.jar', '/disk2/play-1.2.3/framework/lib/snakeyaml-1.7.jar', '/disk2/play-1.2.3/framework/lib/commons-lang-2.6.jar', '/disk2/play-1.2.3/framework/lib/ezmorph-1.0.3.jar', '/disk2/play-1.2.3/framework/lib/cglib-nodep-2.2.jar', '/disk2/play-1.2.3/framework/lib/hibernate-commons-annotations-3.2.0.Final.jar', '/disk2/play-1.2.3/framework/lib/jta-1.1.jar', '/disk2/play-1.2.3/framework/lib/org.eclipse.jdt.core-3.6.0.jar', '/disk2/play-1.2.3/framework/lib/geronimo-servlet_2.5_spec-1.2.jar', '/disk2/play-1.2.3/framework/lib/jaxen-1.1.jar', '/disk2/play-1.2.3/framework/lib/junit-4.8.1.jar', '/disk2/play-1.2.3/framework/lib/oval-1.50.jar', '/disk2/play-1.2.3/framework/lib/jregex-1.2_01.jar', '/disk2/play-1.2.3/framework/lib/slf4j-api-1.6.1.jar', '/disk2/play-1.2.3/framework/lib/bcprov-jdk15-1.45.jar', '/disk2/play-1.2.3/framework/lib/commons-fileupload-1.2.2.jar', '/disk2/play-1.2.3/framework/lib/c3p0-0.9.1.2.jar', '/disk2/play-1.2.3/framework/lib/jsr107cache-1.0.jar', '/disk2/play-1.2.3/framework/lib/commons-io-2.0.1.jar', '/disk2/play-1.2.3/framework/lib/mail-1.4.3.jar', '/disk2/play-1.2.3/framework/lib/commons-javaflow-1066591.jar', '/disk2/play-1.2.3/framework/lib/hibernate-entitymanager-3.6.0.Final.jar', '/disk2/play-1.2.3/framework/lib/memcached-2.6.jar', '/disk2/play-1.2.3/framework/lib/commons-codec-1.4.jar', '/disk2/play-1.2.3/framework/lib/netty-3.2.4.Final.jar', '/disk2/play-1.2.3/framework/lib/h2-1.3.149.jar', '/disk2/play-1.2.3/framework/lib/gson-1.7.1.jar', '/disk2/play-1.2.3/framework/lib/async-http-client-1.6.3.jar'] 

回答

0

我不得不发挥-1.2.3 /框架目录下造成两种不同的打法jar文件的问题。

我比较了play.jar和play-1.2.3.jar中的文件“play/version”。对于play.jar,版本文件内容为“1.1.2”,对于play-1.2.3.jar则为“1.2.3”。我的结论是,play.jar是该框架的旧版本,并且被错误地包含在软件包中,所以我通过从play-1.2.3/framework目录中删除play.jar来解决这个问题。

对于具体的不兼容问题,我建议你只是改变你的代码。 WsAsync.newRequest已在Play 1.2.2中更改为

public WSRequest newRequest(String url, String encoding)