1

私はEclipse/EquinoxベースのOSGIWebアプリケーション(組み込みJettyを使用)を開発しており、アプリのビルドにヘッドレスPDE-Buildを使用しています。私のビルドでは、Linux GTK用のzipファイルと、ローカルmacosx用のzipファイルが作成されます。

これはこれまでのところうまく機能しており、DebianベースのサーバーでLinux zipファイルを解凍し、コマンドラインから./eclipseを実行すると、アプリが起動します。

昨日、新しいビルドを準備してデプロイし、解凍して./eclipseを開始しましたが、何も起こりませんでした。出力なし...何もありません。コマンドラインプロンプトがすぐに返されました。

christoph@myserver:~/myapp$ ./eclipse 
christoph@myserver:~/myapp$

その後私が試したのは、分点ランチャーを使って手動で開始することでした。

christoph@myserver:~/myapp$ java -jar plugins/org.eclipse.equinox.launcher_1.0.200.v20090520.jar

これははるかに良く見え、アプリケーションは通常どおりに起動したように見えました....しかし、約10秒後、起動の途中で停止し、コマンドラインプロンプトに戻りました。

誰かが理由が何であるか、またはeclipseスタートアップファイルで何が起こっているのかをデバッグする方法を知っていますか?ビルドスクリプトは何週間も変更しておらず、結果のzipファイルは以前と同じサイズになっていると思います。サーバーも再起動しました。

./eclipse -noexit、。/ eclipse -debug、。 / eclipse -clean、 。/ eclipse -refresh。/ eclipse -vm / path / to / my / jdk / javaなどを試しましたが、すべて同じ効果があります。 。出力なし、何もありません。

ありがとうクリストフ

4

2 に答える 2

1

更新: この問題は解決されました。解決策については、この回答の一番下までスクロールしてください。

うん、たまたま見つけた気がする…。根本的な原因が何かはまだわかりませんが、どの症状が起動の問題を引き起こしているかはわかっています。

基本的に、ビルドプロセスとデルタパック、および次のjarファイル/フォルダーの競合状態に関連していると思います:

フォルダー: org.eclipse.equinox.launcher.gtk.linux.x86_1.0.200.v20090520

対。

Jar : org.eclipse.equinox.launcher.gtk.linux.x86_64_1.0.200.v20090519.jar

私がつまずいた箇所は、私がよく見たビルド中のいくつかのメッセージでしたが、実際には考えたことはありませんでした:

[java] [eclipse.generateFeature] バンドル org.eclipse.equinox.launcher.gtk.linux.x86: [java] [eclipse.generateFeature] 別のシングルトン バージョンが選択されました: org.eclipse.equinox.launcher.gtk.linux.x86_1。 0.200.v20090520

これは、処理されたビルドが別のものを選択したように聞こえます...?!? 私には奇妙に思えます。

動作していた場合、このjarファイルが抽出され(そのため、org.eclipse.equinox.launcher.gtk.linux.x86_1.0.200.v20090520という名前のフォルダーになりました)、このフォルダーにはeclipse_1206.soというファイルが含まれていました.

機能していなかった場合、org.eclipse.equinox.launcher.gtk.linux.x86_1.0.200.v20090520という名前のフォルダーもありましたが、ファイルeclipse_1206.soはこのフォルダーにはありませんでした。

また、ローカルの Ubuntu マシンでそれを確認したところ、動作しない場合に Debian マシンよりも多くの出力が得られました。

Ubuntuで動作していなかったとき、私は次のようなものを得ました:

$ ./日食

(.:26981): GLib-GObject-WARNING **: 無効な (NULL) ポインター インスタンス

(.:26981): GLib-GObject-CRITICAL **: g_signal_connect_data: アサーション `G_TYPE_CHECK_INSTANCE (インスタンス)' が失敗しました

(.:26981): Gtk-CRITICAL **: gtk_settings_get_for_screen: アサーション `GDK_IS_SCREEN (画面)' が失敗しました

(.:26981): GLib-GObject-CRITICAL **: g_object_get: アサーション `G_IS_OBJECT (オブジェクト)' が失敗しました

gboolean' is invalid or out of range for property (.:26981): GLib-GObject-WARNING **:タイプ `gboolean' のタイプ visible' の値 "TRUE"

(.:26981): Gtk-CRITICAL **: gtk_settings_get_for_screen: アサーション `GDK_IS_SCREEN (画面)' が失敗しました

(.:26981): GLib-GObject-CRITICAL **: g_object_get: アサーション `G_IS_OBJECT (オブジェクト)' が失敗しました

(.:26981): Gtk-WARNING **: GtkWindow の画面が設定されていません。ウィンドウを使用する前に、常に GtkWindow の画面を設定する必要があります

(.:26981): Gdk-CRITICAL **: gdk_pango_context_get_for_screen: assertion `GDK_IS_SCREEN (screen)' failed

(.:26981): Pango-CRITICAL **: pango_context_set_font_description: アサーション `context != NULL' が失敗しました

(.:26981): Pango-CRITICAL **: pango_context_set_base_dir: アサーション `context != NULL' が失敗しました

(.:26981): Pango-CRITICAL **: pango_context_set_language: アサーション `context != NULL' が失敗しました

(.:26981): Pango-CRITICAL **: pango_layout_new: アサーション `context != NULL' が失敗しました

(.:26981): Pango-CRITICAL **: pango_layout_set_text: アサーション `layout != NULL' が失敗しました

(.:26981): Pango-CRITICAL **: pango_layout_set_attributes: アサーション `layout != NULL' が失敗しました

(.:26981): Pango-CRITICAL **: pango_layout_set_alignment: アサーション `layout != NULL' が失敗しました

(.:26981): Pango-CRITICAL **: pango_layout_set_ellipsize: アサーション `PANGO_IS_LAYOUT (レイアウト)' が失敗しました

(.:26981): Pango-CRITICAL **: pango_layout_set_single_paragraph_mode: アサーション `PANGO_IS_LAYOUT (レイアウト)' が失敗しました

(.:26981): Pango-CRITICAL **: pango_layout_set_width: アサーション `layout != NULL' が失敗しました

(.:26981): Pango-CRITICAL **: pango_layout_get_extents: アサーション `layout != NULL' が失敗しました

(.:26981): Gtk-CRITICAL **: gtk_icon_theme_get_for_screen: アサーション `GDK_IS_SCREEN (画面)' が失敗しました

(.:26981): Gtk-CRITICAL **: gtk_settings_get_for_screen: アサーション `GDK_IS_SCREEN (画面)' が失敗しました

(.:26981): Gtk-CRITICAL **: gtk_icon_size_lookup_for_settings: アサーション `GTK_IS_SETTINGS (設定)' が失敗しました

(.:26981): Gtk-WARNING **: 無効なアイコン サイズ 6

(.:26981): Gtk-CRITICAL **: gtk_icon_theme_load_icon: アサーション `GTK_IS_ICON_THEME (icon_theme)' が失敗しました セグメンテーション違反

ホストされたDebianマシン (vserver.de) では、上記の最初の質問で説明したように出力がありません。

おそらく、ビルド プロセス中に前者が使用されることもあれば、後者が使用されることもありました。現時点では理由を説明できません。また、フォルダはプレーン _x86 (32 ビット) アーキテクチャ用であるのに対し、jar は x86_64 (64 ビット) アーキテクチャ用であることにも気付きました。build.propertiesでx86_64を指定しなかったため、64が選択された理由がまったくわかりません。

また、このファイルorg.eclipse.equinox.launcher.gtk.linux.x86_64_1.0.200.v20090519.jar (...x86_64... に注意してください)

結論 根本的な原因は、ある種の一貫性のない/壊れた/めちゃくちゃなターゲット プラットフォームまたはデルタ パックを持っていることだと思います。多分私はヘッドレス PDE ビルドを行う方法で何か間違ったことをしているのかもしれませんが、うまくいくように見えたので、これまでのところわかりませんでした...時々...そして時々そうではありません:)

一致するフォルダーをeclipse_1206.soファイルを含むフォルダーと交換することで、上記のステートメントを確認したところ、突然機能しました。再現可能。そのため、Linux で同様の起動時の問題が発生した場合は、equinox ランチャー フォルダー / jar (例: org.eclipse.equinox.launcher.gtk.linux.x86_1.0.200.v20090520)にeclipse_1206.soが存在するかどうかを確認してください。

それまでの間、根本的な原因とビルドを適切にセットアップする方法を調査し、それをブログ投稿に書き留めます。

これまでに助けようとしてくれたすべての人に感謝します。

クリストフ

更新ソリューション: 解決策は、3.5 バージョン用の新しい Eclipse Deltapack をダウンロードし、ターゲット プラットフォームのすべての ..launcher.. プラグインを新しいものに置き換えることでした。問題は、eclipse_1206.soファイルが見つからない破損したランチャー プラグインでした。

2010/03/01 更新: 別のメモとして、SVN はデフォルトでファイル拡張子 .so を無視することがわかりました。これも問題の原因でした。上記で説明した私の解決策は、これまでのところローカルでのみ機能していましたが、これは正しかったです。しかし、今日、ビルドサーバーから出てくるビルドが最終的に正しいかどうかを確認したかったのですが、驚いたことに..それらはまだ壊れていました。すぐにランチャー プラグイン フォルダーを確認したところ、eclipse_1206.so が再び見つからないことがわかりました。次に、SVN リポジトリを確認しましたが、実際にはファイルがありませんでした。ここで説明したように、SVN はデフォルトでこれらのファイルを無視することが判明しました: SVN はデフォルトで .so ファイルを無視します。

于 2010-02-26T12:04:51.010 に答える
0

ログ ファイルが生成されない場合は、エラーが原因である可能性があります(コンテンツeclipse.ini行の末尾に余分なスペースがあるなど)。eclipse.ini

その.iniファイルは最近何らかの形で変更されましたか?
(または、この問題が発生している展開サーバーで使用できなくなったパスを参照しますか?)

于 2010-02-25T11:31:06.477 に答える