我是一名日常 C#/ ASP.NET MVC / Visual Studio 用户,我刚刚在 JAVA / GRails / Eclipse 中启动了一个项目,但我是发现使用Eclipse的调试功能非常困难,并且发现它们与Visual Studio相比有些限制。特别是,我发现以下相当令人失望,但我不知道它们是否是Eclipse作为一个普通IDE的限制,或者我正在尝试使用它来使用Grails进行开发。
Visual Studio的“立即窗口”看起来很差 - 在VS中我在调试过程中一直使用立即窗口,我发现在eclipse中等效的是“< strong>显示“查看。然而,在VS中我可以输入一个对象的名称(例如“?user”),并且在点击后我给出了对象的所有属性/方法,在eclipse中我必须突出显示表达式,然后明确告诉它检查,执行等。完成后,它会将检查结果添加到另一个窗口,迫使我介于两者之间。
显示视图似乎无法实际评估属性或方法。例如,如果我有一个User类的实例,并且在Display窗口中输入userInstance.FirstName或调用userInstance.FullName()之类的方法,则会得到评估失败错误:“方法FullName()未定义为类型对象“。此外,如果我为实例添加一个手表,我可以看到属性,但再次无法看到该方法。但是,该方法将精细评估为代码块中的表达式(证明它确实存在并被识别)
此外,尽管各种文档声明可以通过简单地突出显示对象来添加手表,但是右键单击并添加Watch这个选项似乎不存在,所以我不得不在显示中键入对象查看,突出显示它并从显示视图上下文菜单中添加一个手表。
评估User.get(params.id)等表达式(再次在“显示”视图中)会返回错误,如下所示:
User.get(params.id)
评估失败。 原因:params无法解决
然而,它在踩过代码时评估得很好。这是由于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的限制,Eclipse的Grails插件还是其他的东西。无论如何,他们使用JAVA开发MVC Web应用程序的效果远不如我使用的等效ASP.NET MVC。
由于
答案 0 :(得分:3)
我在6个月前评估了Groovy / Grails开发的所有3个主要Java IDE,IntelliJ IDEA远远领先于其他两个。我不知道他们之后是否有所改进,但我今天仍在使用IntelliJ并且对它非常满意。它支持调试Groovy非常出色,可以让你完成上面描述的所有事情。我知道这不是免费的,但在我看来,它值得每一分钱。
答案 1 :(得分:1)
首先,在使用Grails和Groovy时,SpringSource Tool Suite得到了很大的改进。所以我建议你尝试一下。但是你仍然会遇到同样的问题。
对于第1点,我也错过了立即窗口。
点2-4不起作用的原因是由于Groovy的动态特性,Eclipse只知道如何使用Plain Java Objects,而它们是Java对象时Groovy添加到Objects中,例如Dynamic方法Eclipse不知道。
我不能谈论Netbeans of Idea,但你可能想要查看它们。
答案 2 :(得分:0)
一旦您获得了使用该平台的经验,习惯于任何非IDE编辑器(我喜欢Far Manager附带的编辑器)都是小菜一碟。
就我个人而言,我没有使用这些IDE来创建最新的项目,而且它比我工作的任何其他项目都要快得多。
有趣的是,因为我没有IDE告诉我,我拼错了一些东西,我创建了很多单元测试(你应该做的事情),我正在使用自动测试插件进行测试。这样的乐趣很多,当我打字时,我没有什么能阻止我 - 只是纯粹的创作:)
答案 3 :(得分:0)
请注意,从STS 2.5.1开始,在Groovy堆栈帧上停止时,Groovy会有扩展的调试支持。现在,显示视图和表达式视图识别Groovy语法,并且可以按照您期望的方式评估Groovy代码。
所以,这意味着您的第2点和第4点现在正在运作。