NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Senpai
Člen
Avatar
Senpai:18.5.2022 12:32

Příkaz java Main.java mi vyhazuje chybu v cmd/bashi "Main.java error: cannot find symbol" když Main.java soubor obsahuje funkce z další třídy (viz. obrázek). Když spustím Main.main() v ideii, tak všechno jede v pohodě. Když Main.java neobsahuje nic z jiných tříd, tak všechno jede v pohodě.

(Obrázek by měl obsahovat vše podstatné)

Zkusil jsem: 1.) Reinstalovat jdk
2.) Odebral/Přidal PATH a JAVA_HOME
3.) Hledal jsem na internetu spoustu článku ale většinou mě odkázali na to, že tam mám gramatickou chybu proměnné. (Idea by mi řekla, že mám)
4.) Zkusil jsem všechny možné terminály (cmd/cmder/ba­sh/idea terminal) (stejný výsledek)
5.) Udělal jsem více projektů na různých místech/hdd
6.) Aktualizovat Javu
7.) Udělat a spustit Main.class a Printer.class (píše mi to wrong name)
8.) Otestovat různé projekty (stejný výsledek)
9.) Buildnout a zkusit soubory z out složky
10.) Příkaz java Main.java Printer.java

Chci docílit: Můj cílem je, když zadám do cmd/bash Main.java ať mi to vypíše to samé, jak v consoly v ideii. Vím, že to jde. (Chtěl bych tu aplikaci otestovat v cmd/bash). Děkuji

 
Odpovědět
18.5.2022 12:32
Avatar
Atrament
Člen
Avatar
Odpovídá na Senpai
Atrament:18.5.2022 17:04

Takhle ti to nepůjde, bez kompilace jako skripty jdou pouštět jenom jedno-souborové prográmky. Musíš nejprve obě ty třídy zkompilovat, zkus v adresáři src:

javac com\todo\*.java

a pak to spustíš

java com.todo.Main
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
18.5.2022 17:04
Avatar
Senpai
Člen
Avatar
Odpovídá na Atrament
Senpai:20.5.2022 10:45

Děkuji moc, vše funguje.

 
Nahoru Odpovědět
20.5.2022 10:45
Avatar
Atrament
Člen
Avatar
Odpovídá na Senpai
Atrament:21.5.2022 1:08

Možná bych měl doplnit, že tohle řešení je sice funkční, ale ne zrovna nejelegantnější a příliš nízko úrovňové. Dobré tak akorát na to si to vyzkoušet, že to fakt funguje. Java aplikace se obvykle takto ručně nekompilují od toho máme IDE a buildovací nástroje. Mnohem obvyklejší je aplikaci zkompilovat a zabalit do 'jar' souboru, který pak můžeš distribuovat a spouštět všude tam kde je nainstalovaná java.

O kompilaci se v Intellij Idea postará tlačítko Build - zkompilované třídy se objeví v adresáři out\production\JavaTest kde je můžeš spustit z příkazové řádky pomocí java com.todo.Main.

Pokud bys chtěl celou aplikaci zabalit do toho 'jar' souboru, stačí v nastavení projektu (F4 v panelu Project) na záložce Artifacts vytvořit nový Artifact - klikneš na tlačítko + a vybereš JAR - From modules with dependencies. V tom dialogu tam pak nastavíš main class na tu com.todo.Main a potvrdíš. Pak když budeš chtít vytvořit 'jar' soubor tak jenom v menu Build vybereš Build artifacts.

Výsledný jar soubor se objeví v adresáři out\artifacts\JavaTest_jar. Spustit jej můžeš z příkazové řádky pomocí java -jar JavaTest.jar. Tento soubor také můžeš vzít a přesunout na jiný počítač, kde je nainstalovaná Java ve verzi stejné a nebo vyšší než s jakou jsi to zkompiloval a půjde spustit i tam.

 
Nahoru Odpovědět
21.5.2022 1:08
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.