web-dev-qa-db-ja.com

Eclipse-プロジェクト全体で「パッケージ宣言を...に変更する」方法

Eclipseに大量のソースコードをインポートしたところ、基本的にパッケージ名が無効になりました(コードはフォルダーに移動されました)。すべてのパッケージ宣言が正しく解決されるように、パッケージエクスプローラーですべてのソースコードを選択してホットキーを押す方法はありますか?ソースを選択してctl-shift-oを押すことでインポートでこれを実行できることを知っていますが、パッケージ宣言でも可能ですか?

pdate:パッケージの名前または場所を変更したくないので、パッケージのリファクタリングは機能しません。パッケージ宣言を調整するだけです。 Javaソースコード。

19

パッケージ宣言が有効でなくなった場合、そのような無効な宣言はすべてEclipseのProblemsビューに表示されます。このビューが表示されない場合は、ウィンドウ->ビューの表示->その他...->問題(一般タブの下)から開くことができます。

コンテキストメニュー(右クリックで利用可能)のQuick fixオプションを選択することにより、[問題]ビューで問題にフィルターをかけ、簡単に修正可能な問題を修正できます。あなたの場合、あなたは以下に掲載されているスクリーンショットのようなものを見るはずです:

Quick fix for incorrect packages

どちらが正しいかを知っている限り、クイックフィックスオプションの適用は簡単です。クラスのパッケージ宣言を変更するか、クラス自体の場所を変更する必要があります。残念ながら、一度に複数のユニットで問題を修正するオプションはありません。すべての問題にクイックフィックスを適用する必要があります。

この種類の問題のみをフィルタリングする場合は、次のスクリーンショットに示すように、問題のビューを構成して、エラーテキストに「予期したパッケージと一致しない」というテキストコンテンツを含むすべてのエラーを表示することを検討してください。

Configure Problem Contents

Eclipse Configure Package Problems

27
Vineet Reynolds

この特定の問題(通常は自動生成されたアーティファクトファイルに付属)について、私はきちんとした解決策を見つけました。

したがって、パッケージ宣言が「package abc;」であることが問題の場合。 200ファイルで、それを「パッケージcom.aa.bb.cc.abc;」にしたいとします。

次に、Eclipseで「パッケージabc;」の検索->ファイルを検索します。必要なフォルダまたはpkgまたはワークスペース全体。 [検索]オプションを選択せず​​に、[置換]を選択してから、「パッケージcom.aa.bb.cc.abc;」を配置します。検索後に交換をお願いした場合。トリックを行う必要があります。

23
Manish

パッケージを右クリックして、「リファクタリング」>「名前の変更」を選択します。これにより、すべてのソースファイルが新しいパッケージ名で更新されます。

6
Matt MacLean

同じ問題が発生したので、それを行うためのbashスクリプトを作成しました。

function Java-package-update { 
  for path in $(find $1 -type f -name "*.Java"); do 
    D=$(dirname $path); 
    F=$(basename $path); 
    P=$(echo $D|tr '/' '.'); 
    if egrep -q '^\s*package\s*' $path; then 
      sed -i '' '/^\s*package\s*/s/^\(\s*package\s*\)[^;]*\(;.*\)/\1 '$P'\2/' $path; 
    else 
      echo >&2 "no package in $path";
    fi; 
  done; 
}

使用されるsedコマンドは、OSXのコマンドです。 GNU sedを使用している場合は、-iの後に ''パラメータを付ける必要はありません。

貼り付けて、ソースを含むディレクトリで実行してください。勇気がない限り、最初にソースをバックアップしてください。

例:

$ cd /home/me/proj/fred/src
$ ls
com
$ cp -a com com.backup
$ Java-package-update com
$ # fingers crossed
$ diff -ru com.backup com

私は本当にこのようなことをPerlのようなより近代的な言語で始めるべきです:)

1
JohnnyLambada

これでうまくいくはずです。

最初にすべてのファイルをデフォルトパッケージにインポートしてから、それらを新しいパッケージにドラッグします。JDTはリファクタリングを行い、プロジェクト全体のパッケージ宣言を変更します。

1
theblackpearl

これは古い質問ですが、同じ問題に遭遇し、非常に単純なbashスクリプトを作成しました。それが誰かを助けることを願っています。

for i in *.Java; do
    sed -i 's/.*package com.example.something;.*/package com.example.something_else;/' $i
done

基本的に、スクリプトはディレクトリ内のすべてのJavaファイルを走査し、package com.example.something;が出現するたびにpackage com.example.something_else;に置き換えられます。

1
chao
  • ALT+SHIFT+Rパッケージ名の最後にアンダースコアを追加し、ENTERを2回押します
  • ALT+SHIFT+Rアンダースコアを削除、ENTER 2回

パッケージが少ない場合に行われます。