转换成Eclipse项目 启动命令行,输入play new <项目名>,Play会在当前路径下创建项目。 输入play eclipsify <项目名>,Play会在项目目录中创建eclipse需
转换成Eclipse项目
启动命令行,输入play new <项目名>,Play会在当前路径下创建项目。
输入play eclipsify <项目名>,Play会在项目目录中创建eclipse需要的配置文件,将其转换成eclipse项目。
在eclipse中导入创建的项目。
调试
Play转换eclipse项目时,在eclipse目录中生成了三个启动配置:
JPDA:连接到已经启动的Play Server,实现alive调试
Demo:本地运行项目
Test:以测试模式启动项目
选中它们,右键执行Run As,即可完成相应的任务。
本地调试
直接Debug As 执行Demo会报错:
ERROR: Cannot load this JVM TI agent twice, check your java command line for duplicate jdwp options.
Error occurred during initialization of VM
agent library failed to init: jdwp
解决办法:
编辑Demo.launch
找到<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value=" -Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n -Dplay.debug=yes ...>
将-Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n去掉!
附加Play源码,即可调试Play本身。
如果使用JDK1.7,还需要进行配置,否则Play会抛异常
Execution exception VerifyError occured : Expecting a stack map frame Exception Details: Location: controllers/Secure$Security.authentify(Ljava/lang/String;Ljava/lang/String;) Z @33: istore_3 Reason: Error exists in the bytecode Bytecode: 0000000: b800 7d12 782b b800 7a12 712a b800 77bb 0000010: 0010 59b7 0012 bf3a 0403 3eb8 0080 1904 0000020: bf3e b800 821d ac Exception Handler Table: bci [0, 23] => handler: 23 Stackmap Table: same_locals_1_stack_item_frame(@23,Object[#55])
Internal Server Error (500) for request GET /sis/ Execution exception (In /app/controllers/Application.java around line 65) VerifyError occured : Expecting a stack map frame Exception Details: Location: controllers/Secure$Security.authentify(Ljava/lang/String;Ljava/lang/String;)Z @33: istore_3 Reason: Error exists in the bytecode Bytecode: 0000000: b800 7d12 782b b800 7a12 712a b800 77bb 0000010: 0010 59b7 0012 bf3a 0403 3eb8 0080 1904 0000020: bf3e b800 821d ac Exception Handler Table: bci [0, 23] => handler: 23 Stackmap Table: same_locals_1_stack_item_frame(@23,Object[#55]) play.exceptions.JavaExecutionException: Expecting a stack map frame Exception Details: Location: controllers/Secure$Security.authentify(Ljava/lang/String;Ljava/lang/String;)Z @33: istore_3 Reason: Error exists in the bytecode Bytecode: 0000000: b800 7d12 782b b800 7a12 712a b800 77bb 0000010: 0010 59b7 0012 bf3a 0403 3eb8 0080 1904 0000020: bf3e b800 821d ac Exception Handler Table: bci [0, 23] => handler: 23 Stackmap Table: same_locals_1_stack_item_frame(@23,Object[#55]) at play.mvc.ActionInvoker.invoke(ActionInvoker.java:237) at Invocation.HTTP Request(Play!) Caused by: java.lang.VerifyError: Expecting a stack map frame Exception Details: Location: controllers/Secure$Security.authentify(Ljava/lang/String;Ljava/lang/String;)Z @33: istore_3 Reason: Error exists in the bytecode Bytecode: 0000000: b800 7d12 782b b800 7a12 712a b800 77bb 0000010: 0010 59b7 0012 bf3a 0403 3eb8 0080 1904 0000020: bf3e b800 821d ac Exception Handler Table: bci [0, 23] => handler: 23 Stackmap Table: same_locals_1_stack_item_frame(@23,Object[#55]) at controllers.Application.setConnectedUser(Application.java:65) at play.mvc.ActionInvoker.invoke(ActionInvoker.java:510) at play.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:484) at play.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:479) at play.mvc.ActionInvoker.handleBefores(ActionInvoker.java:328) at play.mvc.ActionInvoker.invoke(ActionInvoker.java:142) ... 1 more
解决办法:
IDE中配置JRE环境处,设置启动参数 -XX:-UseSplitVerifier
Window → Preferences → Java → Installed JREs → Edit... → Default VM arguments
If you want to stay with JDK7, would be to use "-XX:-UseSplitVerifier" as an argument for the VM.