- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
在 Windows 上将 Pry gem 与 JRuby 和 JRubyFx 一起使用的正确方法是什么?
require 'jrubyfx'
require 'pry'
class SimpleFXApplication < JRubyFX::Application
def start(stage)
stage.title = "jrubyfx app"
@ctrlr = SimpleFXController.load_fxml("some_fxml_code_for_ui.fxml", stage)
stage.show
end
end
class SimpleFXController < JRubyFX::Controller
end
SimpleFXApplication.launch
binding.pry
启动应用程序后,我的控制台不再接受输入,“pry”仅在我关闭 SimpleFXApplication 窗口时返回接受输入。
我也尝试过使用 Java 线程:
...
binding.pry
Java.java.lang.Thread.new do SimpleFXApplication.launch end
但是,尽管新线程 ID 显示为正在运行,但 SimpleFXApplication 永远不会启动。
我尝试的另一件事是从控制台开始 pry,然后要求并启动 SimpleFXApplication:
jruby -S pry
require './jrubyfx_demo.rb'
true
SimpleFXApplication.launch
我收到以下错误...
Exception running Application: java.net.MalformedURLException: unknown protocol: c java.net.URL.(Unknown Source) java.net.URL.(Unknown Source) sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) java.lang.reflect.Constructor.newInstance(Unknown Source) org.jruby.javasupport.JavaConstructor.newInstanceDirect(JavaConstructor.java:291) org.jruby.java.invokers.ConstructorInvoker.call(ConstructorInvoker.java:104) org.jruby.java.invokers.ConstructorInvoker.call(ConstructorInvoker.java:197) org.jruby.runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:211) org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:217) org.jruby.java.proxies.ConcreteJavaProxy$2.call(ConcreteJavaProxy.java:56) org.jruby.runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:211) org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:217) org.jruby.RubyClass.newInstance(RubyClass.java:862) org.jruby.RubyClass$INVOKER$i$newInstance.call(RubyClass$INVOKER$i$newInstance.gen) org.jruby.internal.runtime.methods.JavaMethod$JavaMethodZeroOrOneOrTwoOrNBlock.call(JavaMethod.java:295) org.jruby.java.proxies.ConcreteJavaProxy$3.call(ConcreteJavaProxy.java:155) org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:346) org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:204) org.jruby.ast.CallTwoArgNode.interpret(CallTwoArgNode.java:59) org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105) org.jruby.ast.BlockNode.interpret(BlockNode.java:71) org.jruby.ast.IfNode.interpret(IfNode.java:118) org.jruby.ast.AttrAssignOneArgNode.interpret(AttrAssignOneArgNode.java:33) org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105) org.jruby.ast.BlockNode.interpret(BlockNode.java:71) org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:75) org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:268) org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:220) org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:366) org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:238) org.jruby.ast.FCallThreeArgNode.interpret(FCallThreeArgNode.java:40) org.jruby.ast.LocalAsgnNode.interpret(LocalAsgnNode.java:123) org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105) org.jruby.ast.BlockNode.interpret(BlockNode.java:71) org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:75) org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:225) org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:204) org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:346) org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:204) org.jruby.ast.CallTwoArgNode.interpret(CallTwoArgNode.java:59) org.jruby.ast.InstAsgnNode.interpret(InstAsgnNode.java:95) org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105) org.jruby.ast.BlockNode.interpret(BlockNode.java:71) org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:75) org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:182) org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:188) org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:326) org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:170) org.jruby.ast.CallOneArgNode.interpret(CallOneArgNode.java:57) org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105) org.jruby.ast.BlockNode.interpret(BlockNode.java:71) org.jruby.ast.RescueNode.executeBody(RescueNode.java:224) org.jruby.ast.RescueNode.interpret(RescueNode.java:119) org.jruby.ast.BeginNode.interpret(BeginNode.java:83) org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105) org.jruby.evaluator.ASTInterpreter.INTERPRET_BLOCK(ASTInterpreter.java:112) org.jruby.runtime.Interpreted19Block.evalBlockBody(Interpreted19Block.java:209) org.jruby.runtime.Interpreted19Block.yield(Interpreted19Block.java:197) org.jruby.runtime.Interpreted19Block.call(Interpreted19Block.java:128) org.jruby.runtime.Block.call(Block.java:89) org.jruby.RubyProc.call(RubyProc.java:261) org.jruby.RubyProc.call(RubyProc.java:213) org.jruby.javasupport.JavaUtil$1.call(JavaUtil.java:237) org.jruby.javasupport.util.RuntimeHelpers$MethodMissingMethod.call(RuntimeHelpers.java:445) org.jruby.gen.InterfaceImpl1014569521.run(org/jruby/gen/InterfaceImpl1014569521.gen:13) com.sun.javafx.application.PlatformImpl$5.run(PlatformImpl.java:215) com.sun.javafx.application.PlatformImpl$4$1.run(PlatformImpl.java:179) com.sun.javafx.application.PlatformImpl$4$1.run(PlatformImpl.java:176) java.security.AccessController.doPrivileged(Native Method) com.sun.javafx.application.PlatformImpl$4.run(PlatformImpl.java:176) com.sun.glass.ui.win.WinApplication._runLoop(Native Method) com.sun.glass.ui.win.WinApplication.access$100(WinApplication.java:29) com.sun.glass.ui.win.WinApplication$3$1.run(WinApplication.java:73) java.lang.Thread.run(Unknown Source) => nil
我猜这与 JrubyFx 使用线程的方式有关,或者我不知道这是否是影响 Pry 在 JRuby 中的使用的更普遍的问题。我想了解更多,如果有人可以分享一些建议,我将不胜感激。
最佳答案
SimpleFXApplication.launch 永远不会返回,直到 Platform.exit 被调用(关闭窗口在后台执行此操作)
要执行您想要执行的操作,请在 start 方法中 fork ,或者在 JavaFX 启动应用程序后在其他一些计时器方法中 fork 。
作为 JRubyFX 开发人员之一,我还可以告诉您线程在 JRubyFX/JavaFX 中的工作原理:
关于windows - Jruby:将 Pry 与 JRuby(和 JRubyFx)一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14707182/
调用pry 和调用binding.pry 有什么区别?例如: require 'pry' class Bookshop def initialize(book) @books = []
如果遇到异常(例如,如果您只是在脚本末尾放置一个 undefined variable “x”),Pry 会进入交互模式。 (此外,如果在脚本本身内您需要'pry' 并将binding.pry 放在您
我正在尝试自定义我的 Pry(使用 Pry 有一段时间了,但这是我第一次尝试创建命令。)我想创建一个自定义命令,它将获取最后五十个项目根据我的历史,我正在构建它: Pry::Commands.bloc
pry gem 和 pry-rails gem 有什么区别(在实现方面)? 最佳答案 比较它们的实现没有意义,因为它们是两个不同的东西:一个 IRb 替代品和一个使前者成为 Rails 控制台的插件。
我正在使用 pry-byebug 并且想这样写: 3.times do |i| next if i == 2 p i end 但这失败并出现错误: [1] pry(main)* next
每当我在命令行中输入 pry 时,它都会打开并显示此错误。 terminal$ pry NameError: uninitialized constant Pry::BondCompl
我正在尝试调试一个简单的 ruby 控制台脚本,但在尝试要求 pry 时出现加载错误: 我正在使用 rbenv 来管理环境。 我使用的是 Ruby 版本:2.3.1. 尝试使用 Pry '~> 0
为什么我会收到此 pry 动错误? [36] pry(main)> s = "pry" Error: Cannot find local context. Did you use `binding.p
当一个在rails-application文件夹中时,为什么不一样 $demo_app> pry -r ./config/environment 来自 $demo_app> pry -r config
我正在将我的应用程序的最新版本上传到 Windows 商店,但我的应用程序抛出错误: Package acceptance validation error: We encountered a fat
需要 pry在我的 RSpec spec_helper.rb运行我的规范给了我一堆警告。我该如何摆脱这些? /Library/Ruby/Gems/2.0.0/gems/pry-0.10.0/lib/p
我有 qt 项目 proj1,它依赖于另一个 (proj2)。 目录树是这样的: common/ `--/pr1/ proj1.pri ma
我是 Elixir 的新手,但玩得很开心! 我来自 Ruby 世界,所以开始寻找类比。并且存在调试工具pry。使用 binding.pry 我可以中断任何 session 。我在 Elixir 中发现
我从理解计算 一书中获得了以下代码。目的是改变 inspect 行为。 class Number >" end def to_s value.to_s end end 当我使用 i
当我在 pry 中使用 Tempfile 类时,我没有使用 require 它。 % pry -f pry(main)> Tempfile Tempfile 但是当在 irb 中时,我必须首先要求
我的工作站: $ uname -a Linux dsktop 3.13.0-77-generic #121-Ubuntu SMP Wed Jan 20 10:50:42 UTC 2016 x86_64
我把 binding.pry 放在我的脚本中, 但是现在当它停在断点处时, 是向我显示该信息。 出乎我的意料,如何解决? 帧数:0/11 From: /Users/me/.rbenv/versions
在 Rails 中使用 Pry,当我在代码中遇到断点时 绑定(bind).pry 我想知道我是怎么到这里的,谁给我打电话,谁给他们打电话等等。但奇怪的是我没有看到那个命令。有人知道吗? 最佳答案 要在
我想使用 IEx.pry 在我的 elixir 代码中一步一步地进行,比如 ruby 中的 byebug 或 Java 中的调试点。我尝试查看此处的文档:https://github.com/el
qmake 的*.pro 和*.pri 配置文件有什么区别? *.pro 文件中应包含哪些内容,*.pri 文件中应包含哪些内容? 最佳答案 它们的目标重用之间有一个主要区别: .pro 这通常称为项
我是一名优秀的程序员,十分优秀!