Avatar billede alkrojen Nybegynder
05. august 2002 - 12:22 Der er 6 kommentarer og
1 løsning

Running a class file under Linux

Hi there!

Im new to Java under Red Hat Linux. I have written a small Java program in JEdit.
Saved it as /projects/visionx/Test1.java. I have also compiled it to /projects/visionx/Test1.class

The problem is now that i want to run it. Im using the following shell script to
try to do so:

#!/bin/sh

export JAVA_HOME=/java/j2sdk1.4.0_01
#java home directory
if [ JAVA_HOME="" ]; then
echo "Warning: JAVA_HOME environment variable not set."
export java=java
else
export java="$JAVA_HOME/bin/java"
echo "JAVA_HOME=" $JAVA_HOME
fi

exec $java /projects/visionx/Test1

When i run this script i get the following error:

Exception i thread "main" java.lang.NoClassDefFoundError: projects/visionx/Test1

I have checked that the Test1.class file exists in the specified directory! What can be the problem?

akj

(jeg forstår godt dansk, har bare copy-pasted mit engelske spørgsmål fra www.java.sun.com)
Avatar billede carstenknudsen Nybegynder
05. august 2002 - 12:26 #1
Den kan ikke finde din main metode. Har du defineret
en metode
public static void main( String[] args ) {
...
}
i din Test1.java? Hvis du har det er problemet at
den ikke kan finde din klassefil Test1.class.
Prøv derfor at køre det manuelt med
java -classpath . Test1
hvor du står i direktoriet /projects/visionx/Test1
Hvis det giver en fejlbesked så smid den op.
Avatar billede alkrojen Nybegynder
05. august 2002 - 19:21 #2
Jeg har en main metode i Test1.java, som er vist herunder:

public class Test1 extends javax.swing.JComponent
  {
Avatar billede carstenknudsen Nybegynder
05. august 2002 - 19:29 #3
Må vi se den?
Avatar billede alkrojen Nybegynder
05. august 2002 - 19:36 #4
Jeg har en main metode i Test1.java, som er vist herunder:

public class Test1 extends javax.swing.JComponent
  {
  public static void main(String[] args)
    {
    javax.swing.JFrame f=new javax.swing.JFrame("Howdy");
    f.setSize(300, 300);
    f.getContentPane().add(new Test1());
    f.setVisible(true);
    }

  public void paintComponent(java.awt.Graphics g)
    {
    g.drawString("Hello Java!", 125,95);
    }

  }

Programmet er taget fra en bog, så det burde virke! Jeg har prøvet at skrive:

java -classpath . Test1

i /projects/visionx direktoriet, men det gav følgende fejl:

bash: java: command not found

Jeg fandt så ud af at JAVA_HOME variablen var tom, og initialiserede den på følgende måde:

export /java/j2sdk1.4.0_01

til Java hjemme bibliotek. Og skrev så:

java -classpath . Test1

igen. Men det gav samme fejl. Hvad kan der være galt? Et andet spørgsmål, hvorfor er JAVA_HOME variablen tom, jeg har jo initialiseret den før? bliver den slettet når maskinen slukket?
Avatar billede alkrojen Nybegynder
05. august 2002 - 19:41 #5
en lille rettelse til export sætningen: det er selvfølgelig:
export JAVA_HOME=/java/j2sdk1.4.0_01
Avatar billede carstenknudsen Nybegynder
05. august 2002 - 20:11 #6
Jeg har afprøvet dit program og det virker.
Du skal stå i det direktorie hvor Test1.java ligger.
Der kompilerer du først med
javac -classpath . Test1.java
og kører det så med
java -cp . Test1
Hvis ikke det virker er det din Java installation
der giver problemer.
Din JAVA_HOME skal sættes i din .bashrc fil der ligger
i dit hjemmedirektorie, ellers forsvinder den ved reboot.
Avatar billede alkrojen Nybegynder
05. august 2002 - 20:55 #7
Tak for hjælpen.... programmet kører fint nu...jeg skal bare angive absolutte stier til både javac og java.
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
Kategori
Kurser inden for grundlæggende programmering

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