「SE業務」カテゴリーアーカイブ

Mavenで[ERROR] Unknown lifecycle phase “complie”.が発生する

これまで、Javaのビルドツールとして長らくAntを使ってきましたが、参画するプロジェクトではMavenが使われており、こちらの参考書で勉強を始めました。が、さっそく躓きました。
Javaビルドツール入門 Maven/Gradle/SBT/Bazel対応

最初に、以下のコマンドでMavenのプロジェクトを作成します。(Eclipseでも可)

mvn archetype:generate

その後、以下のコマンドでプログラムをコンパイルするゴール「compile」を指定して、mvnコマンドを実行せよとあります。

mvn compile

しかし、こちら実行するとエラーになってしまう。

「Unknown lifecycle phase “complie”.」。つまり、complieなんてライフサイクルは知らぬと言われています。でも、pom.xmlにはちゃんとcomplieがあります!

大人しく、エラーメッセージにあるURLを表示してみます。
https://cwiki.apache.org/confluence/display/MAVEN/LifecyclePhaseNotFoundException

mvnコマンドの実行例があります。そんでもって、エラーメッセージもよく見ると、指定方法を教えてくれています。

[ERROR] Unknown lifecycle phase “complie”. You must specify a valid lifecycle phase or a goal in the format <plugin-prefix>:<goal> or <plugin-group-id>:<plugin-artifact-id>[:<plugin-version>]:<goal>. 

つまり、ゴールだけを指定するのではだめで、例えば、<plugin-prefix>:<goal>の形式(mvn compiler:complie)で指定すると、上手くいった。

なぜだろう、参考書のMavenは3.3.9を使っており、私のバージョンは3.6.2。バージョン差異のせいなのだろうか・・・
まだ、もやもやするがきっとこの参考書を読み進めればわかると信じて進むべし。(つ_-*)。οΟ


AWS CLIで「Unknown output type: None」のエラーが表示される

AWS CLIを使っていたら、「Unknown output type: None」というエラーが表示されました。(例:STSのキュー一覧を表示)

C:\Users\user01>aws sqs list-queues
Unknown output type: None

これは、コマンドのデフォルト出力形式をデフォルトのNoneのままにしていると発生してしまいます。

もう一度、「aws configure」でデフォルト出力形式をjsonに設定します。

C:\Users\user01>aws configure
AWS Access Key ID [****************P6VX]:
AWS Secret Access Key [****************wXY8]:
Default region name [ap-northeast-1]:
Default output format [None]: json

もう一度、同じコマンドを実行すると、今度はSQSのキュー一覧がJSON形式で表示されました。

C:\Users\user01>aws sqs list-queues
{
    “QueueUrls”: [
        “https://sqs.us-east-1.amazonaws.com/697361273126/MyFirstDLQ“,
        “https://sqs.us-east-1.amazonaws.com/697361273126/MyFirstQueue
    ]
}

こちらのEラーニングに基づき設定したのですが、Default output formatを設定しておらず、こんなことになってしまいました。
https://www.udemy.com/course/aws-certified-developer-associate-dva-c01/

やはり公式↓を見て設定しないとだめですね。(;^_^A
https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-chap-configure.html


ORA-01157が発生した場合の対処法

Oracleをキレイにするために、使っていない表領域を整理しました。すると、Oracleのログに以下のエラーが出力されました。

行1でエラーが発生しました。:
ORA-01157: データファイル5を識別/ロックできません –
DBWRトレース・ファイルを参照してください ORA-01110:
データファイル5: ‘/u01/app/oracle/oradata/TS/TS001.dbf’

原因

これはデータファイルがOS的に見えなくなっている場合に発生します。データファイルがOS上から削除されてしまったか、NAS領域なのであればmountが外れてしまっている場合などが考えられます。私は表領域を整理する中で、誤って必要な表領域のデータファイルを物理削除してしまったようです。

ステップ① MOUNTモードで起動

データベースをシャットダウンして、MOUNTモードで起動します。

SQL> shutdown immediate
SQL> startup mount;

ORACLEインスタンスが起動しました。
Total System Global Area 1173240615 bytes
Fixed Size 8635922 bytes
Variable Size 373223054 bytes
Database Buffers 681671552 bytes
Redo Buffers 8120081 bytes
データベースがマウントされました。

MOUNTモードとは、制御ファイルの読み込みまでで、データベースファイルは読み込みません。
MOUNTモードの説明はこちらがわかりやすかったです。
https://sql-oracle.com/?p=56

ステップ② 表領域をdrop offlineする

エラーが発生した表領域を「drop offline」します。「drop offline」することで、指定したデータファイルをオフライン化して、削除対象としてマークします。

SQL> alter database datafile ‘<対象データファイルパス>’ offline drop ;
データベースが変更されました。

(例)alter database datafile ‘/u01/app/oracle/oradata/TS/ts001.dbf’ offline drop ;

ステップ③ データベースをopenする

SQL> alter database open;
データベースが変更されました。

ステップ④ 表領域を削除する

SQL> drop tablespace ‘<対象表領域名>’ including contents;
表領域が削除されました。

(例)drop tablespace ts001 including contents;

この後は、念のため再起動して完了です。

開発環境だからといって派手(雑に)に表領域を整理したせいで、いやー焦った焦った (;´∀`)