Zum Inhalt springen

Wie packe ich ein Java Programm


xandie

Empfohlene Beiträge

Und das ganze bitte noch mal für Java Anfänger!

Also was muss ich tun um das programm meinen Kumpels zu geben ?

Lade dir die Java-JRE (ca. 15MB) von Sun runter. Packe deine Klassen in einem Jar-File (Befehl "jar" mit entsprechendem "MANIFEST") und gib das deinen Kumpels. Alles andere ist nicht sinnvoll... Die Java-Klassen in exe-Dateien umzuwandeln ist zwar (meiner Meinung nach) was zum ausprobieren, hat aber keinerlei Vorteile und einen gravierenden Nachteil: NICHT Platformunabhängig...

Mit der BoardSuche findest du auch wie man ein selbststartendes Jar-Archiv erstellen kann (Stichwort "MANIFEST").

Grüße Peet

PS: Vergiss das wirklich mit der Exe. Java ist in keinster Weise dafür ausgelegt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Imo solltest du dich auch mal über ANT informieren, das macht die ganze compile und jar aktion um einiges einfacher (wenn man sich einmal reingelesen hat :o) )

Vorallem hast du mehr Einfluss auf das was compiliert und in das jar gepackt wird als bei der arbeit mir J(Bull****)Builder (sry ich mag das ding nicht...)

ein kleines build.xml (config Datei für ANT) häng ich unten an, wenn man sich in ANT eingelesen hat kann man es mit ein paar kleinen änderungen für (fast) jedes Projekt einsetzen da es die imo wichtigsten punkte (compilieren, jar bauen und batch erstellen) übernimmt. Nebenbei kannst du das projekt auch mit ANT starten :o)


<?xml version="1.0"?>

<!-- build.xml - a simple ant buildfile -->

<!-- Author:  Silent -->

<!-- Company: -->

<project name="[DE-Framework]" default="run" basedir=".">


  <property name="company.name" value="Company"/>

  <property name="project.name" value="ProjectName"/>

  <property name="start.class" value="Start"/>


  <property name="de.company" value="de/company"/>


  <property name="jar.name" value="${project.name}.jar"/>


  <property name="javac.debug" value="on"/>


  <property file="${basedir}/build.properties"/>

  <property name="src.dir" value="${basedir}/JavaSrc"/>

  <property name="lib.dir" value="${basedir}/lib"/>

  <property name="bin.dir" value="${basedir}/bin"/>

  <property name="bin.tmp" value="${bin.dir}/tmp"/>

  <property name="bin.log" value="${bin.dir}/log"/>

  <property name="bin.lib" value="${bin.dir}/lib"/>

  <property name="doc.dir" value="${basedir}/JavaDoc"/>


  <property name="version.properties" value="version.properties"/>

  <property name="version.properties.path" value="${src.dir}"/>


  <property name="build.dir" value="${basedir}/build"/>

  <property name="build.classes" value="${build.dir}/classes"/>


  <path id="class.path">

    <fileset dir="${bin.dir}">

      <include name="**/*.jar"/>

    </fileset>

  </path>


  <target name="clean-build">

    <delete dir="${build.dir}"/>

  </target>


  <target name="clean-bin">

    <delete dir="${bin.dir}"/>

  </target>


  <target name="prepare-build" depends="clean-build" >

    <mkdir dir="${build.dir}"/>

    <mkdir dir="${build.classes}"/>

  </target>


  <target name="prepare-bin" depends="clean-bin" >

    <mkdir dir="${bin.dir}"/>

    <mkdir dir="${bin.log}"/>

    <mkdir dir="${bin.lib}"/>

  </target>


  <target name="Copy-Library.dir" depends="prepare-bin,prepare-build" >

    <copy verbose="on" todir="${bin.lib}">

      <fileset dir="${lib.dir}">

        <include name="**/*.jar"/>

      </fileset>

    </copy>


    <copy verbose="on" todir="${build.classes}/${de.company}>

      <fileset dir="${src.dir}/${de.ropardo}">

        <include name="**/*.properties"/>

      </fileset>

    </copy>


  </target>


  <target name="compile" depends="Copy-Library.dir" >

    <javac srcdir="${src.dir}" destdir="${build.classes}">

      <classpath refid="class.path"/>

    </javac>

  </target>


  <target name="Build.jar" depends="compile,run-batch">

    <antcall target="Count Build.number"/>

    <jar jarfile="${jar.name}" basedir="${build.classes}" compress="false" destfile="${bin.dir}/${jar.name}"/>

  </target>


  <target name="Count Version.major">

      <propertyfile file="${version.properties.path}/${version.properties}" comment="Version properties">

        <entry key="version.major" type="int" operation="+" pattern="00" default="00"/>

        <entry key="version.minor" type="int" value="00" pattern="00" default="00" />

        <entry key="version.release" type="int" value="00" pattern="00" default="00"/>

        <entry key="build.number" type="int" operation="+" pattern="00000" default="00000"/>

        <entry key="build.date" type="date" value="now" pattern="dd.MM.yyyy"/>

        <entry key="build.time" type="date" value="now" pattern="hh:mm"/>

      </propertyfile>

  </target>


  <target name="Count Version.minor">

      <propertyfile file="${version.properties.path}/${version.properties}" comment="Version properties">

        <entry key="version.major" type="int" pattern="00" default="00"/>

        <entry key="version.minor" type="int" operation="+" pattern="00" default="00" />

        <entry key="version.release" type="int" value="00" pattern="00" default="00"/>

        <entry key="build.number" type="int" operation="+" pattern="00000" default="00000"/>

        <entry key="build.date" type="date" value="now" pattern="dd.MM.yyyy"/>

        <entry key="build.time" type="date" value="now" pattern="hh:mm"/>

      </propertyfile>

  </target>


  <target name="Count Version.release">

      <propertyfile file="${version.properties.path}/${version.properties}" comment="Version properties">

        <entry key="version.major" type="int"  pattern="00" default="00"/>

        <entry key="version.minor" type="int" pattern="00" default="00" />

        <entry key="version.release" type="int" operation="+" pattern="00" default="00"/>

        <entry key="build.number" type="int" operation="+" pattern="00000" default="00000"/>

        <entry key="build.date" type="date" value="now" pattern="dd.MM.yyyy"/>

        <entry key="build.time" type="date" value="now" pattern="hh:mm"/>

      </propertyfile>

  </target>


  <target name="Count Build.number">

      <propertyfile file="${version.properties.path}/${version.properties}" comment="Version properties">

        <entry key="version.major"    type="int" pattern="00" default="00"/>

        <entry key="version.minor"    type="int" pattern="00" default="00" />

        <entry key="version.release"  type="int" pattern="00" default="00"/>

        <entry key="build.number"     type="int" operation="+" pattern="00000" default="00000"/>

        <entry key="build.date" type="date" value="now" pattern="dd.MM.yyyy"/>

        <entry key="build.time" type="date" value="now" pattern="hh:mm"/>

      </propertyfile>

  </target>


  <target name="Release.jar">

    <antcall target="Count Version.release"/>

    <antcall target="Build.jar"/>

  </target>


  <target name="Minor.jar">

    <antcall target="Count Version.minor"/>

    <antcall target="Build.jar"/>

  </target>


  <target name="run-batch" >

    <echo file="${bin.dir}/${project.name}.cmd"

      message="java -cp ${jar.name}; ${bin.lib}/*.jar de.company.project.${start.class}"/>

  </target>


  <target name="run" depends="Build.jar" >

    <java classname="de.company.project.${start.class}" fork="true">

      <classpath refid="class.path"/>

    </java>

  </target>


  <target name="run-logfile" depends="Build.jar" >

    <java classname="de.company.project.${start.class}" fork="true" args="-logfile" >

      <classpath refid="class.path"/>

    </java>

  </target>

</project>

ANT-Home

edit:

wenn du das Jar hast und deinen kumpels eine setup datei (mit oder ohne java) geben möchtest solltest du dich auch mal über InstallAnywhere Informieren: Zero G

wenn ich richtig informiert bin gibt es eine imo leistungsfähige kostenlose lösung, und eine kostenpflichtige die noch einiges mehr drauf hat (was genau weis ich nicht, hab es in 3.5 Jahre Java Programmierung und Programmauslieferungen nicht gebraucht :o) )

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...