VSCでJavaを扱ったことが無いので雑になります。
カレントディレクトリの移動 cd "c:\Users\*\**\***\Java_3\java_3\src\"
からのコンパイル javac App.java
ですからsrc配下にクラスファイルが生成されるわけです。
javac
に -classpath
引数が無いのでライブラリパッケージを探せない状態です。
解らないのであれば素直にEclipse IDEやIntelliJ IDEAなどを使うべきです。
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は以下のようにしています。
{
"java.project.sourcePaths": ["src"],
"java.project.outputPath": "bin",
"java.project.referencedLibraries": [
"lib/*.jar"
]
}
そして、App.javaで、processingのライブラリを読み込む記述を試しています。
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を読み込みできるようにしたいのですが、どうすれば良いでしょうか?
ご教授いただけますと、幸いです。
VSCでJavaを扱ったことが無いので雑になります。
カレントディレクトリの移動 cd "c:\Users\*\**\***\Java_3\java_3\src\"
からのコンパイル javac App.java
ですからsrc配下にクラスファイルが生成されるわけです。
javac
に -classpath
引数が無いのでライブラリパッケージを探せない状態です。
解らないのであれば素直にEclipse IDEやIntelliJ IDEAなどを使うべきです。
@STSynthe さん
横からで大変恐縮です。
※情報共有、のつもりです。
私も原因を疑ったのですが、
cd hoge
、javac hoge.java
、java hoge.class
の
順で実行に至るというイメージでしたが、Java SE 11から
「事前コンパイルせず実行(javaコマンドのみで実行)」できるようなのです。
※Java(7~)から離れた期間が広く、古い知識に固着していた状態でした。
なのでいきなり「java sample.java」を打ち込んで事足りるようなのですね。(未調査)
(結果としてjavac に -classpath引数を持たせる従来の方法とは異なるのではなかろうかとの推測です)
上記理由から、本事象の原因特定・断言に至らず不甲斐ない限りです。
解らないのであれば素直にEclipse IDEやIntelliJ IDEAなどを使うべきです。
上記は正に仰る通りで、初学であれば環境が一通り揃っている統合開発環境を利用すべきだと思います。
(取捨選択しなければ動作が重いというネックを除けば色々セットなのでお得だと思っています)
VSCで質問者のJavaコードをデバッグにかけましたが、正常にビルドは通るようです(JDK 17/Processing 4.3)。
import processing.core.PApplet;
public class App extends PApplet {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
{
"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.home
はjava.jdt.ls.java.home
のことを指してますか?
前者は打ち切った(非推奨)ので後者で書くようにとされてるのですが現状どうなんでしょうか?
AIに質問したところ、以下の回答を得た。
Javaでパッケージが存在しないというエラーが表示される場合は、CLASSPATHの問題が考えられます。
たとえば、VSCodeで教材通りにpackageを利用してclassを分けたソースコードを書いてコンパイルすると、呼び出すパッケージが存在しませんというエラーが発生する場合があります。
この場合、拡張機能を無効にすることでエラーが解消されることがあります。
そもそも何故src配下にコンパイル後のクラスファイルが配置されているか謎ですが…
(1) どのような手順で環境構築・実行しましたか?
※手順や導入した拡張機能、参考にしたページ等があれば詳細に記述してください
(2) VSCodeのターミナルでjava -version
と入力し、
パスが通っていることを確認できますか?
(3) パスが通っている場合、ライブラリを読み込まない
極単純なプログラムを作成し、コンパイル・実行できることを確認できますか?
(4) libフォルダ配下にあるライブラリは正しく配置されていますか?
@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と入れると、コンパイルエラーとなり、先述のようなエラーが出るといった感じです。
EclipseかSTSでしかJavaを扱ったことがない為、
推測且つ的外れでしたら申し訳ないです。
(4) ライブラリを読み込む設定
参考にされているページの
日付が2年以上前なので現在の環境と大幅に異なる可能性があります。