0

Jruby+swingで小さなデスクトップアプリケーションを完成させました。今、私はそれを展開したいと思います。ウェブ以外のアプリケーションからjarをビルドするには、rawrが最適であることがわかりました。しかし、Jrubyプロジェクトからjarをビルドしようとすると、「rakeaborted !プライベートメソッド `move'がFile:Classを呼び出しました」というエラーが発生しました。

cmdprometからの完全なトレースは次のとおりです。

E:\NETBEANS\KeyingClient_jruby\lib>rake rawr:jar --trace
c:/jruby-1.7.0/lib/ruby/gems/shared/gems/rawr-1.2/lib/zip/zip.rb:28: Use RbConfi
g instead of obsolete and deprecated Config.
** Invoke rawr:jar (first_time)
** Invoke rawr:compile (first_time)
** Invoke rawr:compile_java_classes (first_time)
** Invoke rawr:prepare (first_time)
** Invoke rawr:load_configuration (first_time)
** Execute rawr:load_configuration
** Execute rawr:prepare
** Execute rawr:compile_java_classes
** Invoke rawr:compile_ruby_classes (first_time)
** Invoke rawr:prepare
** Execute rawr:compile_ruby_classes
** Invoke rawr:copy_other_file_in_source_dirs (first_time)
** Invoke rawr:prepare
** Execute rawr:copy_other_file_in_source_dirs
** Execute rawr:compile
** Invoke rawr:build_data_jars (first_time)
** Invoke rawr:prepare
** Execute rawr:build_data_jars
** Execute rawr:jar
=== Creating jar file: E:/NETBEANS/KeyingClient_jruby/lib/package/jar/KeyingClie
nt.jar
rake aborted!
private method `move' called for File:Class
c:/jruby-1.7.0/lib/ruby/gems/shared/gems/rawr-1.2/lib/zip/zip.rb:1570:in `on_suc
cess_replace'
c:/jruby-1.7.0/lib/ruby/gems/shared/gems/rawr-1.2/lib/zip/zip.rb:1478:in `commit
'
c:/jruby-1.7.0/lib/ruby/gems/shared/gems/rawr-1.2/lib/zip/zip.rb:1493:in `close'

c:/jruby-1.7.0/lib/ruby/gems/shared/gems/rawr-1.2/lib/zip/zip.rb:1385:in `open'
c:/jruby-1.7.0/lib/ruby/gems/shared/gems/rawr-1.2/lib/jar_builder.rb:40:in `buil
d'
c:/jruby-1.7.0/lib/ruby/gems/shared/gems/rawr-1.2/lib/rawr.rb:171:in `(root)'
org/jruby/RubyProc.java:249:in `call'
c:/jruby-1.7.0/lib/ruby/gems/shared/gems/rake-0.9.2.2/lib/rake/task.rb:205:in `e
xecute'
org/jruby/RubyArray.java:1612:in `each'
c:/jruby-1.7.0/lib/ruby/gems/shared/gems/rake-0.9.2.2/lib/rake/task.rb:200:in `e
xecute'
c:/jruby-1.7.0/lib/ruby/gems/shared/gems/rake-0.9.2.2/lib/rake/task.rb:158:in `i
nvoke_with_call_chain'
c:/jruby-1.7.0/lib/ruby/1.9/monitor.rb:211:in `mon_synchronize'
c:/jruby-1.7.0/lib/ruby/gems/shared/gems/rake-0.9.2.2/lib/rake/task.rb:151:in `i
nvoke_with_call_chain'
c:/jruby-1.7.0/lib/ruby/gems/shared/gems/rake-0.9.2.2/lib/rake/task.rb:144:in `i
nvoke'
c:/jruby-1.7.0/lib/ruby/gems/shared/gems/rake-0.9.2.2/lib/rake/application.rb:11
6:in `invoke_task'
c:/jruby-1.7.0/lib/ruby/gems/shared/gems/rake-0.9.2.2/lib/rake/application.rb:94
:in `top_level'
org/jruby/RubyArray.java:1612:in `each'
c:/jruby-1.7.0/lib/ruby/gems/shared/gems/rake-0.9.2.2/lib/rake/application.rb:94
:in `top_level'
c:/jruby-1.7.0/lib/ruby/gems/shared/gems/rake-0.9.2.2/lib/rake/application.rb:13
3:in `standard_exception_handling'
c:/jruby-1.7.0/lib/ruby/gems/shared/gems/rake-0.9.2.2/lib/rake/application.rb:88
:in `top_level'
c:/jruby-1.7.0/lib/ruby/gems/shared/gems/rake-0.9.2.2/lib/rake/application.rb:66
:in `run'
c:/jruby-1.7.0/lib/ruby/gems/shared/gems/rake-0.9.2.2/lib/rake/application.rb:13
3:in `standard_exception_handling'
c:/jruby-1.7.0/lib/ruby/gems/shared/gems/rake-0.9.2.2/lib/rake/application.rb:63
:in `run'
c:/jruby-1.7.0/lib/ruby/gems/shared/gems/rake-0.9.2.2/bin/rake:33:in `(root)'
org/jruby/RubyKernel.java:1045:in `load'
c:/jruby-1.7.0/bin/rake:23:in `(root)'
Tasks: TOP => rawr:jar

ビルドに「rakerawr:jar」を使用していますが、jrubyのバージョンは1.7.0です。

誰かが何が悪いのか教えてもらえますか...

少し早いですがお礼を。

4

1 に答える 1

2

File.moveRuby1.9.xで削除されたようです。これはrawrのバグである可能性があります。File.rename良い選択肢になるはずです。

moveファイルシステム間で物事を移動することができず、そのようなことを試みたときに多くのエラーを引き起こすため、この機能は削除されたと思います。ほとんどの人はこの種のことをテストしないので、異なるパーティションを持つシステムでそれを使用しようとしている誰かに影響を与えると、問題が発生することがよくあります。

このrename方法は、別のより信頼性の高いアプローチを採用しており、必要に応じてコピーします。

于 2012-11-14T06:22:57.797 に答える