我该如何做到这一点,以便Eclipse在我编辑它时自动更新我的代码?我之前在YouTube视频中看过该功能,但找不到它。例如:我将JApplet矩形的宽度从20更改为10,我希望立即看到它更新。我怎样才能让Eclipse自动更新窗口中的代码?
回答
我见过Notch在开发视频(Minecraft)上做这件事,它很棒,但我不知道他是如何做到的。
- 编辑 -
这一直缠着我让我去和Google搜索“如何做切口代码”,并发现这是一个博客页面https://gun.io/blog/what-i-learned-from-watching-notch-code/上。它并没有说明它是如何完成的,而是给出了一个很好的提示(HotSwap),并且使得它看起来像是在没有外部软件的情况下自己设置的。这里是最相关的部分:
令人难以置信的快速测试 他从构建引擎开始,为此,他使用了Java JVM 1.4.2的'HotSwap'功能,它在检测到不断更新运行代码时一个班改变了。 构建引擎时,Notch写了一个函数,它可以连续平移相机并夹住墙壁并将视图保持在顶部,这样他就可以对代码进行更改并查看它们实时制作的效果。我习惯于通过编写函数,构建函数,将其安装到正在测试的设备上进行测试,然后查看结果,一次最多可能需要一分钟,因此很容易了解HotSwapping如何实现节省了大量的开发时间。
---原职续---
我用groovysh虽然得到类似的效果,工程进展顺利,并可以使用所有的Java类的。
我通常会做的是将所有的代码写入java中,然后去启动“Groovysh”,它会给你一个输入命令的小窗口(你可能必须确保类路径在eclipse之外正常工作)。然后,我可以一次一行地“新建”我的任何课程并对它们调用方法。当你做myFrame.setSize([100,100])时,你会看到它立即改变。
一个很好的测试是刚刚运行groovysh并键入类似:
import javax.swing.*
f=new JFrame()
f.setVisible(true)
f.setSize(100,100)
或更巧妙的版本:
f=new JFrame(visible:true, size:[100,100])
,你会在屏幕上看到你的框架调整。你甚至可以将它拖动得更大,然后做类似的操作:
println f.getWidth()
显示你的新宽度。以这种方式进行交互是很有趣的,但如果你想要改变你的类定义并且看到它改变了,我不知道Notch是如何做到的。我仔细研究了一下 - 可能他正在使用类似于JRebel
它需要一些特殊的东西,因为每次保存时都需要动态地将类文件重新加载到运行系统中 - 这应该会导致严重的类加载器问题。
顺便说一下,还有一种方法可以让Java程序抛出一点GroovyConsole,它将允许您检查和修改正在运行的代码中的所有变量(但又不能替换现有类的定义)。
另请参阅答案在这里: Change a method at runtime via a hot swap mechanism
要添加到Bill的答案 - Notch将不得不使用类似JRebel的东西来实际替换代码。具有调试模式的Eclipse增量编译器仍然局限于HotSwap。 – Adam 2014-12-14 19:20:12
@Adam此视频:https://www.youtube.com/watch?v=rhN35bGvM8c约30分钟 - 你能告诉他是否使用JRebel?我从来没有见过他参考它。在日食中不会有一些可见性吗?工具栏看起来像股票日蚀 - JRebel甚至没有添加图标? – 2014-12-15 00:02:46
如果您注意到,Notch更改而不重新启动应用程序的唯一方法是方法体。大多数时候,他的代码实际上并没有运行,他只是从内存中修改他想做的事情。他正在启动他的应用程序,并启用调试模式并更改方法体,或者杀死应用程序并反复调试。这很有趣,因为我们实际上有人使用JRebel和minecraft。也许他应该试试看。 :) – Adam 2015-03-02 00:22:58
- 1. 我怎样才能让这段代码更“自动化”?
- 2. 我怎样才能刷新窗口
- 3. 我怎样才能更新在Android对话窗口多选择
- 4. 我怎样才能console.log父窗口?
- 5. 我怎样才能让
- 6. 我怎样才能让我的Python代码的运行速度
- 7. 我怎样才能让这个更好
- 8. 我怎样才能让这更干?
- 9. 我怎样才能让这个弹出窗口
- 10. 我怎样才能让CSS动画
- 11. 我怎样才能让我的代码工作在我的代码
- 12. 我怎样才能让这样的
- 13. 我怎样才能让我的数字时钟动态?看看我的代码
- 14. 我怎样才能打开新的模态窗口
- 15. 我怎样才能调整WPF窗口更小的“laggy”?
- 16. 我怎样才能使这个代码
- 17. 我怎样才能结合代码
- 18. 我怎样才能看到MSIL代码
- 19. 我怎样才能通过代码
- 20. 我怎样才能JSP或Java代码
- 21. 我怎样才能让自己的懒惰迭代器?
- 22. 我怎样才能自动获得更新几个月?
- 23. 我怎样才能让这个GridView出现在我窗口的中心?
- 24. 怎样才能让android中
- 25. 我怎样才能让自己的过渡更顺利?
- 26. 怎样才能让这些代码3个系更加干燥
- 27. 我怎样才能更新记录?
- 28. 我怎样才能改变“UPDATA”更新
- 29. 我怎样才能让在ActiveReports中
- 30. 我怎样才能写得更好我的jQuery代码?
哪些影片你在看到它,因为据我所知,你将不得不编译和运行应用程序/小程序/任何再次 – 2014-12-04 23:11:34
喜欢的东西[JRebel的] (http://zeroturnaround.com/software/jrebel/jrebelrocks/?utm_medium=sidebar&utm_source=stackoverflow&utm_campaign=pancake)也许? – azurefrog 2014-12-04 23:18:56