Avatar billede glvi93 Nybegynder
21. september 2011 - 12:20 Der er 10 kommentarer

Køre en jar på Debian Squeeze

Hej alle.
Jeg har nu kunne fastslå at "Makefile" til at compile en fil er
for ustabil, da emacs ikke vil bruge flymake med den, til tider.

Er så gået over til Ant, det har lykkedes mig at kunne lave en
build.xml som den stå i http://ant.apache.org/manual/tutorial-HelloWorldWithAnt.html , jeg bruger java 1.6, som den bliver compilet i.

Jeg har lavet en hello world, compilet den, samt lavet en jar fil.
Derefter prøver jeg i terminalen at skrive "ant run" eller i dir som jar ligger "java main", men den kommer med disse fejlmeddelser:

    [java] Exception in thread "main" java.lang.NoSuchMethodError: main
    [java] Java Result: 1

koden er:

class main {
    public void hello() {
    System.out.println("hello world");
    }
}

Jeg skulle gerne kunne laves en jar fil som kan køres med min java vm, men der må vel gøres et eller andet end det for at få det til stoppe med den fejl-meddelse.
Avatar billede arne_v Ekspert
21. september 2011 - 15:01 #1
class main {
    public void hello() {
    System.out.println("hello world");
    }
}

->

MainClass.java
--------------

public class MainClass {
    public void main(String[] args()) {
        System.out.println("hello world");
    }
}
Avatar billede arne_v Ekspert
21. september 2011 - 15:01 #2
Ligesom i C er main et magisk metode navn - hello er ikke.
Avatar billede glvi93 Nybegynder
22. september 2011 - 16:01 #3
Ok, så nu hedder den

Public class MainClass {
  void main(String[] args) {
    System.out.println("hello world");
  }
}
_______________________________________________________
                          build.xml

<project name="MainClass" basedir="<mappe med kompileret kode>" default="main">

    <property name="src.dir"    value="<mappe med kilde-kode>"/>

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

Den kompilerer fint, men siger samme fejl-besked.
Avatar billede glvi93 Nybegynder
22. september 2011 - 16:03 #4
Ups, det er void som er Public, ikke <MainClass>

class MainClass {
  Public void main(String[] args) {
....
Avatar billede arne_v Ekspert
22. september 2011 - 16:18 #5
public class MainClass {
  public void main(String[] args) {
    System.out.println("hello world");
  }
}

i en fil ved navn MainClass.java burde oversaettes til MainClass.class og kunne koeres.
Avatar billede glvi93 Nybegynder
22. september 2011 - 18:57 #6
Den funker ikke rigtig.
Prøvede med en public class, men den giver stadig samme fejl-besked.
Jeg har prøvet at compile programmet i Eclipse med samme compiler, der køres den fint i Eclipse's konsol, men når jeg forsøger at køre programmet fra terminalen med argument "java class <program>", giver den samme besked igen.
Avatar billede arne_v Ekspert
23. september 2011 - 01:54 #7
Du staar i det dir som indehodler MainClass.class og bruger kommandoen:

java MainClass

?
Avatar billede arne_v Ekspert
23. september 2011 - 01:56 #8
Og jeg forstaar ikke helt din build.xml - det ligner ene properties.

http://www.eksperten.dk/guide/54 har et simpelt eksempel paa build.
Avatar billede glvi93 Nybegynder
23. september 2011 - 18:04 #9
Jeg kigger nærmere om det vil funke.

For god ordens skyld:

Debian Squeeze
GCC 4.4 (Java 1.5)
OpenJDK 6 (Java 1.6)
Ant 1.8
Eclipse Galileo
Emacs23 + JDE

Eclipse laver automatisk build.xml samt egen compiler, kun jar filen vil køres.

Emacs med jde-mode & ant build, forsøgt begge versioner som beskrevet i ant.apache men både jar & class vil ikke køre.
Avatar billede arne_v Ekspert
09. oktober 2011 - 05:04 #10
Kan du proeve at poste det hele:
- kode
- kommando
- fejl tekst
etc.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester