Yutanza
@Yutanza

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Javaのコンパイル時の"パッケージは存在しません"エラーを解決したい。

Q&A

解決したいこと

Javaのコンパイル時の"パッケージは存在しません"エラーを解決したい。

やりたいこと

Java初心者です。
VScodeでJavaプロジェクトを作成し、processingのライブラリを読み込めるようにしたいです。

試したこと 、やったこと

まず、JDKをインストールしました。
Vscodeの"create java project"で、javaのプロジェクトを作成しました。
java.homeには、JDKのパスを書きました。

ディレクトリ構造

java_3
|
├── vscode
|    └── setting.json
├── bin
|    └── App.class
├── lib
|    ├── core.jar
|    ├── gluegen-rt.jar
|    └── jogl-all.jar
└── src
     ├── App.java
     └── App.class
    

libディレクトリには、processingのライブラリを入れています。
また、setting.jsonは以下のようにしています。

setting.json
{
    "java.project.sourcePaths": ["src"],
    "java.project.outputPath": "bin",
    "java.project.referencedLibraries": [
        "lib/*.jar"
    ]
}

そして、App.javaで、processingのライブラリを読み込む記述を試しています。

App.java
import processing.core.PApplet;

public class App  extends PApplet{
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }

発生している問題・エラー

これで、App.javaを実行しようとすると、以下のようなエラーが出ます。

PS C:\Users\*\**\***\Java_3\java_3> cd "c:\Users\*\**\***\Java_3\java_3\src\" ; if ($?) { javac App.java } ; if ($?) { java App }
App.java:1: エラー: パッケージprocessing.coreは存在しません
import processing.core.PApplet;
                      ^
App.java:4: エラー: シンボルを見つけられません
public class App  extends PApplet{
                          ^
  シンボル: クラス PApplet
エラー2個

どうにかして、このエラーを消して、processing.coreを読み込みできるようにしたいのですが、どうすれば良いでしょうか?
ご教授いただけますと、幸いです。

0

4Answer

VSCでJavaを扱ったことが無いので雑になります。

カレントディレクトリの移動 cd "c:\Users\*\**\***\Java_3\java_3\src\" からのコンパイル javac App.java ですからsrc配下にクラスファイルが生成されるわけです。

javac-classpath 引数が無いのでライブラリパッケージを探せない状態です。

解らないのであれば素直にEclipse IDEやIntelliJ IDEAなどを使うべきです。

1Like

Comments

  1. @STSynthe さん
    横からで大変恐縮です。
    ※情報共有、のつもりです。

    私も原因を疑ったのですが、
    cd hogejavac hoge.javajava hoge.class
    順で実行に至るというイメージでしたが、Java SE 11から
    「事前コンパイルせず実行(javaコマンドのみで実行)」できるようなのです。
    ※Java(7~)から離れた期間が広く、古い知識に固着していた状態でした。

    なのでいきなり「java sample.java」を打ち込んで事足りるようなのですね。(未調査)
    (結果としてjavac に -classpath引数を持たせる従来の方法とは異なるのではなかろうかとの推測です)

    上記理由から、本事象の原因特定・断言に至らず不甲斐ない限りです。
     

    解らないのであれば素直にEclipse IDEやIntelliJ IDEAなどを使うべきです。

    上記は正に仰る通りで、初学であれば環境が一通り揃っている統合開発環境を利用すべきだと思います。
    (取捨選択しなければ動作が重いというネックを除けば色々セットなのでお得だと思っています)

VSCで質問者のJavaコードをデバッグにかけましたが、正常にビルドは通るようです(JDK 17/Processing 4.3)。

image.png

src\App.java
import processing.core.PApplet;

public class App extends PApplet {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}

.vscode\settings.json
{
    "java.project.sourcePaths": ["src"],
    "java.project.outputPath": "bin",
    "java.project.referencedLibraries": [
        "lib/**/*.jar"
    ],
    "java.jdt.ls.java.home": "C:\\jdk"
}

ターミナル
PowerShell 7.4.1
PS C:\java\project\Sample_1>  & 'C:\jdk\bin\java.exe' '-agentlib:jdwp=transport=dt_socket,server=n,suspend=y,address=localhost:60633' '@S:\Temp\cp_g84yqi6bjdfalm92tirc5vdp.argfile' 'App' 
Hello, World!
PS C:\java\project\Sample_1>  c:; cd 'c:\java\project\Sample_1'; & 'C:\jdk\bin\java.exe' '-agentlib:jdwp=transport=dt_socket,server=n,suspend=y,address=localhost:54278' '@S:\Temp\cp_g84yqi6bjdfalm92tirc5vdp.argfile' 'App' 
Hello, World!

気になるのはcdの位置です。当方2度目のデバッグ時に正しいcdの位置を示しました。

少なくともJavaのプロジェクトはどのIDEにおいても、プロジェクトファイルを含んだ「フォルダを開く」のが基本です。
まさかとは思いますが、ファイル単体のApp.javaを直接開いてます?

java.homeには、JDKのパスを書きました。

java.homejava.jdt.ls.java.homeのことを指してますか?
前者は打ち切った(非推奨)ので後者で書くようにとされてるのですが現状どうなんでしょうか?

1Like

AIに質問したところ、以下の回答を得た。

Javaでパッケージが存在しないというエラーが表示される場合は、CLASSPATHの問題が考えられます。
たとえば、VSCodeで教材通りにpackageを利用してclassを分けたソースコードを書いてコンパイルすると、呼び出すパッケージが存在しませんというエラーが発生する場合があります。
この場合、拡張機能を無効にすることでエラーが解消されることがあります。

0Like

そもそも何故src配下にコンパイル後のクラスファイルが配置されているか謎ですが…

(1) どのような手順で環境構築・実行しましたか?
  ※手順や導入した拡張機能、参考にしたページ等があれば詳細に記述してください

(2) VSCodeのターミナルでjava -versionと入力し、
  パスが通っていることを確認できますか?

(3) パスが通っている場合、ライブラリを読み込まない
  極単純なプログラムを作成し、コンパイル・実行できることを確認できますか?

(4) libフォルダ配下にあるライブラリは正しく配置されていますか?

0Like

Comments

  1. @Yutanza

    Questioner

    ご回答ありがとうございます。
    以下は、今の状況です。
    (1)
    参考にしたページは、以下です。
    ↓VScodeでの、java実行環境、拡張機能のインストール
    https://teramaguro.hatenablog.com/entry/2021/12/28/042743
    また、有効にしてある、VScodeの拡張機能は以下の通りです。(Java関連)
    Language Support for Java(TM) by Red Hat
    Extension Pack for Java
    Debugger for Java
    Processing Language
    Test Runner for Java
    (2)
    VScodeのターミナルで、パスは通っています。
    (3)
    ライブラリを読み込まなければ、実行できます。
    (4)
    processingをダウンロードした時に手に入るjarファイルが、全て配置されています。

    vscodeのターミナルで、java App.javaと入れると、コンパイルエラーとなり、先述のようなエラーが出るといった感じです。

  2. EclipseかSTSでしかJavaを扱ったことがない為、
    推測且つ的外れでしたら申し訳ないです。

    (4) ライブラリを読み込む設定
    参考にされているページの
    日付が2年以上前なので現在の環境と大幅に異なる可能性があります。

Your answer might help someone💌