我是一名日常 C#/ASP.NET MVC/Visual Studio 用户,我刚刚在 JAVA/GRails/Eclipse 中启动了一个项目,但我发现使用 Eclipse 的调试功能非常困难,并且与 Visual Studio 相比,它们有些有限。特别是,我发现以下内容相当令人失望,但我不知道它们是否是 Eclipse 作为普通 IDE 的限制,或者我正在尝试使用 Grails 来使用它进行开发。
看起来与 Visual Studio 的“立即窗口”相当差劲 - 在 VS 中,我在调试过程中一直使用“立即窗口”,我发现在 Eclipse 中等效的是“<强>显示” View 。然而,在 VS 中,我可以输入对象的名称(例如“?user”),然后按 Enter 键后,我会获得该对象的所有属性/方法,而在 Eclipse 中,我必须突出显示该表达式,然后明确告诉它执行检查、执行等操作。完成此操作后,它将检查结果添加到另一个窗口,迫使我在两个窗口之间切换。
显示 View 似乎无法实际评估属性或方法。例如,如果我有一个 User 类的实例,并且在显示窗口中输入 userInstance.FirstName 或调用 userInstance.FullName() 等方法,我会收到评估失败错误:“The method FullName() is undefined for类型对象”。此外,如果我为实例添加一个监视,我可以看到属性,但同样看不到该方法。但是,该方法作为代码块中的表达式可以很好地计算(证明它确实存在并被识别)
此外,虽然各种文档都指出可以通过简单地突出显示对象来添加监视,但右键单击并添加监视此选项似乎不存在,因此我必须将对象键入到显示中 View ,突出显示它并从显示 View 上下文菜单中添加监视。
计算 User.get(params.id) 等表达式(同样在“显示” View 中)会返回错误,如下所示:
User.get(params.id)
Evaluation failed. Reason(s): params cannot be resolved
但是,它在单步执行代码时评估良好。这是由于 Grails/Groovy 的动态特性吗?
代码片段:
User.groovy:
class User {
String firstName
String lastName
String middleName
private String fullname
static constraints = {
firstName(blank:false)
lastName(blank:false)
middleName(blank:false)
}
public String FullName()
{
fullname = firstName + " " + lastName;
}
}
UserController.groovy:
class UserController {
...
def show = {
User userInstance = User.get(params.id)
userInstance.FullName()
if (!userInstance) {
flash.message = "${message(code: 'default.not.found.message', args: [message(code: 'user.label', default: 'User'), params.id])}"
redirect(action: "list")
}
else {
[userInstance: userInstance]
}
}
...
}
任何人都可以说这些是否是 Eclipse、Grails Plugins for Eclipse 或者可能是其他东西的限制。不管怎样,他们使用 JAVA 开发 MVC Web 应用程序的吸引力远低于我使用的同等 ASP.NET MVC。
谢谢
最佳答案
大约 6 个月前,我评估了用于 Groovy/Grails 开发的所有 3 个主要 Java IDE,IntelliJ IDEA 远远领先于其他两个。我不知道自那以后它们是否有所改进,但我今天仍在使用 IntelliJ,并且对此感到非常满意。它对 Groovy 调试的支持非常出色,并且允许您执行上面描述的所有操作。我知道它不是免费的,但在我看来,它值得每一分钱。
关于eclipse - Eclipse 中对 Grails Web 应用程序的调试支持很差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2258624/