Vill du vara del av diskussionerna i forumet, ställa frågor eller hjälpa andra? Registrera dig här!

Hjälp mig skapa en körbar jar-fil (intellij)

Trädvy Permalänk
Medlem
Registrerad
Mar 2018

Hjälp mig skapa en körbar jar-fil (intellij)

Hej! Jag har programmerat ett tag nu och har lyckats göra ett helt ok program som gör lite olika beräkningar. Det funkar att köra i swing när jag har intellij uppe, men jag vill gärna kunna ladda ner programmet som en körbar jar-fil, som enkelt kan köra programmet oavsett om man sitter i intellij eller inte.

Jag har suttit x timmar på olika hemsidor, sett videor, etc, men alltid är det något i stegen som inte ser ut som det gör för mig, eller av andra anledningar inte funkar.

Jag kommer så långt att jag lyckas skapa en jar-fil under out --> artifacts i mitt projekt (jag gör detta genom project structure-->artifacts-->rebuild artifacts.)

Vissa sidor skriver någonting om Maven, som jag inte vet vad det är. Andra skriver något om att man måste ha ett manifest, och att man kör jar-filen genom att slå in en command prompt i terminalen, men det är ju inte det jag vill. Jag vill ha en nedladdningsbarfil som jag kan ha lätt tillgänglig på min data och helt enkelt köra.

Hade varit otroligt tacksam om någon kunde hjälpa mig med det här, även om det bara är genom att ge mig en hänvisning till vad jag ska följa för guide (för det finns så otroligt mycket olika direktiv på nätet!.)

Trädvy Permalänk
Medlem
Plats
Linköping
Registrerad
Mar 2004

Titta på det tredje svaret i den här tråden! Borde vara det du söker.
https://stackoverflow.com/questions/1082580/how-to-build-jars...

"Happiness is only real when shared"

Trädvy Permalänk
Medlem
Plats
Sverige
Registrerad
Jul 2001

Är det ett mavenprojekt? Konvertera till ett spring-boot projekt och kör som headless, då får du en körbar fil på köpet kan man säga.
Kolla t.ex. här:
https://stackoverflow.com/questions/23553755/run-spring-boot-...

Du kan skapa ett spring boot projekt direkt i IntelliJ så blir det automatiskt ett mavenprojekt. Sedan kan du flytta din kod till det projektet. Har du inget maven-projekt idag så har du kanske lite mer jobb att hitta rätt beroenden som du använder (om du använder några), men annars bör det gå ganska fort.

EDIT: Läste visste inte allt, du använder inte maven såg jag. Då kanske min lösning är en liten uppförsbacke.

WS: AMD Ryzen 7 1700 | 48 GB DDR4 @3000 MT/s | Geforce GTX 1060 OC 6GB | 1TB SSD + 480 (nvme) + 256 + 240 GB SSD | Manjaro Linux + Win10 Pro
Bärbar: Macbook Pro Retina 13" | Intel Core I5 2,4Ghz | 16GB RAM | 256GB Flash
Server: 3x HP Proliant microserver Gen8 | 16 GB DDR3 ECC ram | Sammanlagt 26TB HDD | Esxi

Trädvy Permalänk
Medlem
Registrerad
Dec 2015

Vilket operativsystem gäller det?

Jag jobbade runt 2009 med att distribuera en Java-skrivbords-applikation (på Windows XP). Saker och ting kan ha ändrats sedan dess och det finns säkert smartare sätt att göra saker på...

Första steget är att få applikationen att fungerar från kommandorad.

java -jar dinapp.jar

Felmeddelanden när du kör så?

Min gissning är att din classpath inte kommer vara korrekt i det läget. Programmet har ju beroenden som ligger i andra .jar-filer som måste finnas i classpath. Enklaste lösningen brukar vara att skapa en .bat-fil som sätter classpath och sedan kör kommandoraden. .bat-filer kan man ju dubbelklicka. Detta kommer fungera om mottagaren av programmet har en JRE eller JDK installerat, samt får .bat-filen, din .jar-fil och alla beroenden distribuerade i t.ex en zip-fil. Om mottagaren inte har en JRE installerad så måste du hitta på ett sätt att distribuera en JRE också... det finns ju normalt inte installerat i Windows. Eller ha med installation av JRE först i installationsinstruktionen.

En JRE-installation (på Windows) associerar .jar-filer med javaw så att dubbelklick på .jar-filen fungerar. Men som sagt ovan är det troligt att programmet kraschar direkt på grund av classpath-problem. Du får antagligen inte se felmeddelandet om du inte kör från kommandorad i stället.

Om du faktiskt vill kompilera in hela din programkod, alla beroenden och java-interpretatorn i en och samma distribuerbara fil, som dessutom har filändelsen .jar och går att starta genom att dubbelklicka -- då har jag ingen aning om hur man gör. Jag gissar på "man gör inte så", men som sagt, det var 10 år sedan jag gjorde något sånt här sist

Ett Java-program jag använder på Windows ibland är SOAPUI Open Source. Dom har byggt installationsprogrammet (en dubbelklickbar .exe) i något verktyg för just det ändamålet, med stor sannolikhet inte Java. Den filen installerar bara programmet på disk, inklusive en bundlad JRE. Det finns också en SoapUI.exe i bin-mappen, men jag gissar att även det programmet är programmerat i ett annat språk än Java och bara sätter classpath och kör igång java-interpretatorn (javaw.exe). Det finns även en soapui.bat i installationsmappen som kör igång programmet, där kan man se hur man väljer mellan olika Java-interpretatorer och hur classpath sätts innan Java-interpretatorn (java.exe) anropas med ett klassnamn som argument.

Trädvy Permalänk
Medlem
Plats
Sverige
Registrerad
Jul 2001
Skrivet av KAD:

. Jag gissar på "man gör inte så", men som sagt, det var 10 år sedan jag gjorde något sånt här sist

Jo, det är inga problem att göra så. Allt annat är mest bökigt.
Kör du t.ex. spring så gör du en "fat jar" med de beroenden applikationen behöver av och då är det bara köra java -jar myapp.jar
Kör du en webapplikation så bundlar du till och med en applikationsserver, om du t.ex. kör spring boot
Det är inget nytt med att bundla med andra jar-filer i din paketering och gjordes även för 10 år sen.

WS: AMD Ryzen 7 1700 | 48 GB DDR4 @3000 MT/s | Geforce GTX 1060 OC 6GB | 1TB SSD + 480 (nvme) + 256 + 240 GB SSD | Manjaro Linux + Win10 Pro
Bärbar: Macbook Pro Retina 13" | Intel Core I5 2,4Ghz | 16GB RAM | 256GB Flash
Server: 3x HP Proliant microserver Gen8 | 16 GB DDR3 ECC ram | Sammanlagt 26TB HDD | Esxi