Ubuntu日本語フォーラム
ログインしていません。
$ ~/Documents/matsuo/tools/gatk-4.5.0.0/gatk CreateSequenceDictionary --REFERENCE ~/Documents/○○○/materials/JG.fa
のコマンドプロンプトを実行すると
Using GATK jar /home/inf/Documents/matsuo/○○○/gatk-4.5.0.0/gatk-package-4.5.0.0-local.jar
Running:
java -Dsamjdk.use_async_io_read_samtools=false -Dsamjdk.use_async_io_write_samtools=true -Dsamjdk.use_async_io_write_tribble=false -Dsamjdk.compression_level=2 -jar /home/inf/Documents/matsuo/tools/gatk-4.5.0.0/gatk-package-4.5.0.0-local.jar CreateSequenceDictionary --REFERENCE /home/inf/Documents/matsuo/materials/JG.fa
Error: Invalid or corrupt jarfile /home/inf/Documents/matsuo/tools/gatk-4.5.0.0/gatk-package-4.5.0.0-local.ja
とエラーが出ました。Java8/JDK1.8以降のJavaが必要とのことなので、javaのバージョンを確認すると
$ java -version
java version "1.7.0_80"
だったのでopenjdk-17をインストールするため次を実行したところ
~/Documents/○○○/tools$ sudo apt install -y openjdk-17-jdk
Reading package lists... Done
Building dependency tree
Reading state information... Done
openjdk-17-jdk is already the newest version (17.0.7+7~us1-0ubuntu1~18.04).
The following packages were automatically installed and are no longer required:
cdbs debhelper dh-autoreconf dh-strip-nondeterminism dh-translations
intltool jq libarchive-cpio-perl libfile-stripnondeterminism-perl
libfile-which-perl libjq1 libllvm9 libmail-sendmail-perl libonig4
libsys-hostname-long-perl po-debconf python3-scour scour
Use 'sudo apt autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 11 not upgraded.
と表示されすでにインストールされているようでした。openjdk-17でもJava8/JDK1.8以降という規格は満たしていないのでしょうか。次に何をしていいか困っています。ご教授よろしくお願いいたします。
オフライン
matsu1129 さん
matsu1129 による投稿:
$ java -version
java version "1.7.0_80"
別のところにインストールした java が使われているのではないでしょうか?
私も apt で openjdk-17-jdk をインストールしてみましたが、
java のバージョンは 17.0.10 になっていました。
$ sudo apt install openjdk-17-jdk $ java --version openjdk 17.0.10 2024-01-16 OpenJDK Runtime Environment (build 17.0.10+7-Ubuntu-122.04.1) OpenJDK 64-Bit Server VM (build 17.0.10+7-Ubuntu-122.04.1, mixed mode, sharing)
まず、apt でインストールした java が使われているのかを確認してください。
確認するコマンドは以下になります。
$ which java
通常であれば、/usr/bin/java と表示されるはずです。
オフライン
matsu1129 による投稿:
$ ~/Documents/matsuo/tools/gatk-4.5.0.0/gatk CreateSequenceDictionary --REFERENCE ~/Documents/○○○/materials/JG.fa
のコマンドプロンプトを実行すると
Using GATK jar /home/inf/Documents/matsuo/○○○/gatk-4.5.0.0/gatk-package-4.5.0.0-local.jar
Running:
java -Dsamjdk.use_async_io_read_samtools=false -Dsamjdk.use_async_io_write_samtools=true -Dsamjdk.use_async_io_write_tribble=false -Dsamjdk.compression_level=2 -jar /home/inf/Documents/matsuo/tools/gatk-4.5.0.0/gatk-package-4.5.0.0-local.jar CreateSequenceDictionary --REFERENCE /home/inf/Documents/matsuo/materials/JG.fa
Error: Invalid or corrupt jarfile /home/inf/Documents/matsuo/tools/gatk-4.5.0.0/gatk-package-4.5.0.0-local.ja
とエラーが出ました。Java8/JDK1.8以降のJavaが必要とのことなので、javaのバージョンを確認すると
最後のgatk-package-4.5.0.0-local.jaはjarが切れちゃった感じでしょうか?
あと、確かにgatkは現在記載していただいたJavaのバージョン以上の物が必要みたいですが、エラーの中ではそんなことは書かれていないような?
記憶違いであれば申し訳ないのですが、求めるバージョンが違うときにはそのようなメッセージが出ていたような気がしています。
なので、もしかしたら以下の2つの問題があるのではないかと個人的に思っています。(違ったらすみません)
①gatk-package-4.5.0.0-local.jarが壊れている
②hellfireさんが言うように違うJavaが使われている
①に関してはgatk-package-4.5.0.0-local.jarのダウンロード/インストールをやり直してみるのがいいかもしれません。
matsu1129 による投稿:
openjdk-17でもJava8/JDK1.8以降という規格は満たしていないのでしょうか。
満たしていたはずです。
オフライン
hellfire による投稿:
matsu1129 さん
matsu1129 による投稿:
$ java -version
java version "1.7.0_80"別のところにインストールした java が使われているのではないでしょうか?
私も apt で openjdk-17-jdk をインストールしてみましたが、
java のバージョンは 17.0.10 になっていました。コード:
$ sudo apt install openjdk-17-jdk $ java --version openjdk 17.0.10 2024-01-16 OpenJDK Runtime Environment (build 17.0.10+7-Ubuntu-122.04.1) OpenJDK 64-Bit Server VM (build 17.0.10+7-Ubuntu-122.04.1, mixed mode, sharing)まず、apt でインストールした java が使われているのかを確認してください。
確認するコマンドは以下になります。コード:
$ which java通常であれば、/usr/bin/java と表示されるはずです。
hellfireさん
お返事ありがとうございます。
$ which java
通常であれば、/usr/bin/java と表示されるはずです。
>/usr/bin/java と表示されました。
とうことはjarファイルが壊れているということでしょうか。GATK4.5.0.0はつい先日インストールしたばかりなのですが、壊れているってことはあるのでしょうか。GATK4.5.0.0をインストールする前はGATK4.1.7.0と4.4.0.0がインストールされていたのですが同じ結果が返ってきたため、jarファイルが壊れているかと思いGATK4.5.0.0をインストールした次第です。
オフライン
kanchi による投稿:
matsu1129 による投稿:
$ ~/Documents/matsuo/tools/gatk-4.5.0.0/gatk CreateSequenceDictionary --REFERENCE ~/Documents/○○○/materials/JG.fa
のコマンドプロンプトを実行すると
Using GATK jar /home/inf/Documents/matsuo/○○○/gatk-4.5.0.0/gatk-package-4.5.0.0-local.jar
Running:
java -Dsamjdk.use_async_io_read_samtools=false -Dsamjdk.use_async_io_write_samtools=true -Dsamjdk.use_async_io_write_tribble=false -Dsamjdk.compression_level=2 -jar /home/inf/Documents/matsuo/tools/gatk-4.5.0.0/gatk-package-4.5.0.0-local.jar CreateSequenceDictionary --REFERENCE /home/inf/Documents/matsuo/materials/JG.fa
Error: Invalid or corrupt jarfile /home/inf/Documents/matsuo/tools/gatk-4.5.0.0/gatk-package-4.5.0.0-local.ja
とエラーが出ました。Java8/JDK1.8以降のJavaが必要とのことなので、javaのバージョンを確認すると最後のgatk-package-4.5.0.0-local.jaはjarが切れちゃった感じでしょうか?
あと、確かにgatkは現在記載していただいたJavaのバージョン以上の物が必要みたいですが、エラーの中ではそんなことは書かれていないような?
記憶違いであれば申し訳ないのですが、求めるバージョンが違うときにはそのようなメッセージが出ていたような気がしています。
なので、もしかしたら以下の2つの問題があるのではないかと個人的に思っています。(違ったらすみません)
①gatk-package-4.5.0.0-local.jarが壊れている
②hellfireさんが言うように違うJavaが使われている
①に関してはgatk-package-4.5.0.0-local.jarのダウンロード/インストールをやり直してみるのがいいかもしれません。matsu1129 による投稿:
openjdk-17でもJava8/JDK1.8以降という規格は満たしていないのでしょうか。
満たしていたはずです。
kanchiさん
最後のgatk-package-4.5.0.0-local.jaはjarが切れちゃった感じでしょうか?
はい、最後のrが切れていました。すいません。
GATK4.5.0.0はつい先日インストールしたばかりなのですが、壊れているってことはあるのでしょうか。GATK4.5.0.0をインストールする前はGATK4.1.7.0と4.4.0.0がインストールされていたのですが同じ結果が返ってきたため、jarファイルが壊れているかと思いGATK4.5.0.0をインストールした次第です。
オフライン
~/Documents/○○○/tools$ java --version
Unrecognized option: --version
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
このような結果が返ってきました。ふと今思ったのですが、新しいjavaをインストールしたらパスを通さないとダメですか。
オフライン
matsu1129 による投稿:
~/Documents/○○○/tools$ java --version
Unrecognized option: --version
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
ロングオプションの--versionを使っているからです。
新しいjava関してはロングオプションでも認識するようになりましたが、古いjavaは以前matsu1129さんがご自身で入力していたようにショートオプションしか認識しません。
複数のバージョンを使う場合には別の方法があるのですが、過去の質問を拝見させていただいたところmatsu1129さんはまだ色々不慣れなようですので可能であれば一度すべてのJAVAを削除してから再度入れ直したほうがいいのではないかと感じたので方法を記載しておきます。
$ dpkg -l | grep '^ii' | grep openjdk # インストールされているjavaの一覧を表示 $ sudo apt purge openjdk* # インストールされているjavaを削除 $ java -version # javaがインストールされていないことを確認 $ sudo apt install openjdk-17-jdk
もしjava -versionを入力した時点でバージョンが表示される場合にはoracle版のjavaがインストールされていると思うので、上記手順を多少変更してoracleのjavaを検索してそちらも削除してください。
また、本来であれば環境変数のJAVA_HOMEという物を設定するのがjavaの筋なのですが、とりあえずは一旦無視して作業を進めて、詰まったらJAVA_HOMEについて調べるのがいいと思います。
最後になりますが、
matsu1129 による投稿:
ふと今思ったのですが、新しいjavaをインストールしたらパスを通さないとダメですか。
パスを通すという意味を簡単に説明すると、環境変数(OSがコマンドを探す場所)にコマンドの場所を登録するという意味です。
java -versionを打った際にコマンドを認識するということは、すでにパスが通っていると言うことです。
javaはそれぞれの別の場所にインストールされるのですが、使用するバージョンのリンクをパスの通った場所に作成することでjavaコマンドで実行できるようになっています。
もしそれぞれのバージョンのリンクを直接環境変数に追加した場合、すべての実行名はjavaとなるため環境変数の先頭に記載されている(最後だったかも?自信ちょっとない。。。)もののみがjavaコマンドで実行されるようになります。
オフライン
kanchiさん
お返事ありがとうございます。当方、まだubuntuを触り始めて3か月に満たない程度であり右も左もわからない状況です。アドバイス本当に助かります。
以下が実行結果になります。
$ dpkg -l | grep '^ii' | grep openjdk
ii openjdk-11-jdk:amd64 11.0.19+7~us1-0ubuntu1~18.04.1 amd64 OpenJDK Development Kit (JDK)
ii openjdk-11-jdk-headless:amd64 11.0.19+7~us1-0ubuntu1~18.04.1 amd64 OpenJDK Development Kit (JDK) (headless)
ii openjdk-11-jre:amd64 11.0.19+7~us1-0ubuntu1~18.04.1 amd64 OpenJDK Java runtime, using Hotspot JIT
ii openjdk-11-jre-headless:amd64 11.0.19+7~us1-0ubuntu1~18.04.1 amd64 OpenJDK Java runtime, using Hotspot JIT (headless)
ii openjdk-17-jdk:amd64 17.0.7+7~us1-0ubuntu1~18.04 amd64 OpenJDK Development Kit (JDK)
ii openjdk-17-jdk-headless:amd64 17.0.7+7~us1-0ubuntu1~18.04 amd64 OpenJDK Development Kit (JDK) (headless)
ii openjdk-17-jre:amd64 17.0.7+7~us1-0ubuntu1~18.04 amd64 OpenJDK Java runtime, using Hotspot JIT
ii openjdk-17-jre-headless:amd64 17.0.7+7~us1-0ubuntu1~18.04 amd64 OpenJDK Java runtime, using Hotspot JIT (headless)
inf@inf-PowerEdge-T110-II:~/Documents/matsuo/tools$ sudo apt purge openjdk*
............何行もの処理結果............
dpkg: warning: while removing openjdk-11-jre-headless:amd64, directory '/usr/lib/jvm' not empty so not removed
Purging configuration files for openjdk-17-jre-headless:amd64 (17.0.7+7~us1-0ubuntu1~18.04) ...
inf@inf-PowerEdge-T110-II:~/Documents/matsuo/tools$ java -version
java version "1.7.0_80"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)
javaが残っているようです。
もしjava -versionを入力した時点でバージョンが表示される場合にはoracle版のjavaがインストールされていると思うので、上記手順を多少変更してoracleのjavaを検索してそちらも削除してください。
>sudo apt purge jdk1.7.0_80で合ってますか。
オフライン
matsu1129 による投稿:
dpkg: warning: while removing openjdk-11-jre-headless:amd64, directory '/usr/lib/jvm' not empty so not removed
これに関してはpackageでインストールされた以外の物が記載されている場所に存在する場合に出るエラーのはずなので、確認をお願いします。
もし自分の必要な物や依存している物が入ってなければ下記コマンドで削除したあとにもう一回purgeコマンドを実行してください。
(packageはすでにアンインストールされている状態になっているかもしれないですが念の為)
$ sudo rm -rf /usr/lib/jvm
matsu1129 による投稿:
もしjava -versionを入力した時点でバージョンが表示される場合にはoracle版のjavaがインストールされていると思うので、上記手順を多少変更してoracleのjavaを検索してそちらも削除してください。
>sudo apt purge jdk1.7.0_80で合ってますか。
検索した結果が貼られていないのでわかりません。
検索して出てきた物のアンインストールをお願いします。
オフライン
kanchiさん
お返事ありがとうございます。
chatGPTによると
dpkg: warning: while removing openjdk-11-jre-headless:amd64, directory '/usr/lib/jvm' not empty so not removed:
意味: dpkgがopenjdk-11-jre-headless:amd64パッケージを削除している最中に、/usr/lib/jvmディレクトリが空でないため削除されなかったという警告メッセージです。
理由: /usr/lib/jvmディレクトリには、他のJavaバージョンや関連ファイルが存在する可能性があります。そのため、ディレクトリ自体は削除されず、そこに残ります。
ということなの
$ ls /usr/lib/jvm
jdk1.7.0_80
よりjdk1.7.0_80を削除すればいいのかなと思いました。
検索した結果が貼られていないのでわかりません。
検索して出てきた物のアンインストールをお願いします。
>
検索結果とは以下のことでしょうか。
$ java -version
java version "1.7.0_80"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)
オフライン
kanchiさん
FASTAファイルのdictionaryの作成ができました。お手数おかけして申し訳ありませんでした。ありがとうございました。
オフライン