Avatar billede musiigedeo Nybegynder
09. juli 2007 - 17:00 Der er 67 kommentarer og
1 løsning

jar file

Jeg har lavet en jar file vha den commando
"C:\Egen_fil\JBuilder>jar cmf manifest.mf deos_tt3.jar jaajaajaa"
Og når jeg bruger commandoen "jar tf deos_tt3" Kan jeg se at min jar file indeholder alle de filer jeg har i mappen jaajaajaa.
Problemet er når jeg bruger commandoen "C:\Egen_fil\JBuilder>java jar deos_tt3.jar" får jeg den exception
"Exception in thread "main" java.lang.NoClassDefFoundError: jar"

Og når jeg double klikker på jar filen "deos_tt3" skriver Java Virtual Machine Launcher
"Could not fint the main class. Program will exit"

er der nogen der har kendskab til det?

Jeg vil lige tilføre at min manifest file indeholder
Manifest-Version: 1.0
Main-Class: ttteer.class
Avatar billede mikkelbm Nybegynder
09. juli 2007 - 19:09 #1
Prøv:

java -jar deos_tt3.jar
Avatar billede musiigedeo Nybegynder
10. juli 2007 - 08:06 #2
Det har jeg og den giver også den samme respons
Avatar billede mikkelbm Nybegynder
10. juli 2007 - 10:05 #3
Det kan umuligt give samme fejl-besked, da du skriver det forkert:

java jar deos_tt3.jar

er ikke det samme som:

java -jar deos_tt3.jar

Har du husket linjeskift efter sidste linje i dit manifest?
Avatar billede _carsten Nybegynder
10. juli 2007 - 10:07 #4
Har du linieskift i dit manifest efter Main-Class: ttteer.class ?

Ligger ttteer.class i en package ??

Skal det være -  Main-Class: jaajaajaa/ttteer.class  ??
Avatar billede _carsten Nybegynder
10. juli 2007 - 10:09 #5
2 min. for sent :)
Avatar billede mikkelbm Nybegynder
10. juli 2007 - 10:12 #6
:)

Og en ting mere. Det skal nok også være:

Main-Class: ttteer

og ikke:

Main-Class: ttteer.class
Avatar billede musiigedeo Nybegynder
10. juli 2007 - 10:13 #7
til Mikkelbm. Sådan ser det ud når jeg kører det med begge commandoer

C:\Egen_fil\JBuilder>java jar deos_tt3.jar
Exception in thread "main" java.lang.NoClassDefFoundError: jar

C:\Egen_fil\JBuilder>java -jar deos_tt3.jar
Exception in thread "main" java.lang.NoClassDefFoundError: ttteer

Og min manifest file ser sådan herud(Og jeg er sikker på at den ender med et linje skift siden at jeg bruger jedit)
Manifest-Version: 1.0
Main-Class: ttteer
Avatar billede mikkelbm Nybegynder
10. juli 2007 - 10:14 #8
Glem min sidste kommentar. Du skal have .class på ifølge suns tutorial. Det er bare mig der er blevet lidt rusten i det her jar-halløj :)
Avatar billede mikkelbm Nybegynder
10. juli 2007 - 10:15 #9
Ja, okay. Men se det er jo heller ikke samme fejl-besked. Det er samme fejl-type, men ikke samme fejl.
Har du prøvet Carstens forslag med package?
Avatar billede musiigedeo Nybegynder
10. juli 2007 - 10:17 #10
Til carsten
ttteer ligger ikke i en package. jaajaajaa er bare projekt navn
Avatar billede _carsten Nybegynder
10. juli 2007 - 10:19 #11
Ok

Jeg er også lidt rusten i det her, tror faktisk mikkelbm har ret
prøv lige

Main-Class: ttteer
Avatar billede _carsten Nybegynder
10. juli 2007 - 10:21 #12
Sådan læser/skimmer jeg i hvertfald sun's tut
Avatar billede musiigedeo Nybegynder
10. juli 2007 - 10:24 #13
Jeg prøvede Main-Class: ttteer til at starte med og det hjalp heller ikke. når jeg buger "C:\Egen_fil\JBuilder>jar tf deos_tt3.jar" kan jeg se at jar filen indeholder alle de filer jeg skal have.
Avatar billede _carsten Nybegynder
10. juli 2007 - 10:26 #14
Hvad med dit manifest, er det med ??
Avatar billede _carsten Nybegynder
10. juli 2007 - 10:27 #15
Laver du jar fil på følgende måde

jar cfm deos_tt3.jar Manifest.txt *.class
Avatar billede musiigedeo Nybegynder
10. juli 2007 - 10:28 #16
Og forresten når jeg prøver at køre jar filen udenfor kommandoprompt, kommer der en popup med den besked
java virtual machine launcher
could not find the main class. Program will exit
Avatar billede musiigedeo Nybegynder
10. juli 2007 - 10:28 #17
nej jeg laver den sådan her
C:\Egen_fil\JBuilder>jar cmf manifest.mf deos_tt3.jar jaajaajaa
Avatar billede _carsten Nybegynder
10. juli 2007 - 10:32 #18
Jeg ville sige

jar cfm deos_tt3.jar manifest.mf jaajaajaa/*.*

Så vidt jeg husker er faktorernes orden ikke ligegyldig
Avatar billede musiigedeo Nybegynder
10. juli 2007 - 10:34 #19
kan det forresten have noget at gøre med at min application har sådan en serialportevent hvor den skal læse fra porten hvergang der er noget?
Avatar billede musiigedeo Nybegynder
10. juli 2007 - 10:37 #20
C:\Egen_fil\JBuilder>jar cfm deos_tt3.jar manifest.mf jaajaajaa/*.*

C:\Egen_fil\JBuilder>java jar deos_tt3.jar
Exception in thread "main" java.lang.NoClassDefFoundError: jar

det hjælper desværre heller ik
Avatar billede _carsten Nybegynder
10. juli 2007 - 10:44 #21
Måske - men i første omgang er det dit manifest du ikke får med i din jar

Det skal ligge i din jar i en mappe der hedder META-INF/manifest.mf

Jeg bliver nødt til at løbe et par timer
Avatar billede musiigedeo Nybegynder
10. juli 2007 - 10:46 #22
Det gør den ifølge

C:\Egen_fil\JBuilder>jar tf deos_tt3.jar
META-INF/
META-INF/MANIFEST.MF

Jeg har ik taget alt med
Avatar billede mikkelbm Nybegynder
10. juli 2007 - 10:50 #23
"C:\Egen_fil\JBuilder>java jar deos_tt3.jar
Exception in thread "main" java.lang.NoClassDefFoundError: jar"

Du bliver jo også ved med at skrive en forkert kommando!

Der SKAL en bindestreg foran jar ellers tror den at din klasse hedder jar.
Avatar billede musiigedeo Nybegynder
10. juli 2007 - 10:53 #24
Jeg bruger begge kommandoer er som jeg er usikker på hvilken en af dem er den rigtigt. Og java -jar giver følgende
C:\Egen_fil\JBuilder>java -jar deos_tt3.jar
Exception in thread "main" java.lang.NoClassDefFoundError: ttteer
Avatar billede _carsten Nybegynder
10. juli 2007 - 13:22 #25
Har du prøvet at åbne META-INF/MANIFEST.MF for at se om det er dit, eller det bare er et default manifest ?
Avatar billede musiigedeo Nybegynder
10. juli 2007 - 15:08 #26
jeg er sikker på at den er min, her er dens indeholde
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.6.5
Created-By: Deo Musiige (Micro-Pc)
Main-Class: ttteer
Avatar billede musiigedeo Nybegynder
10. juli 2007 - 15:12 #27
Kan mit problem skyldes at min application lytter på serial porten og skriver dataen ud hvergang den kommer?
Avatar billede _carsten Nybegynder
10. juli 2007 - 15:35 #28
Nej - det tror jeg ikke, for så langt nåer den ikke

Prøv at lave en simpel txt-fil hvor du ikke skriver andet på første linie end: Main-Class: ttteer
derefter laver du et linieskift - gem filen i samme dir som ttteer.class


Lav jar-fil på følgende måde:    jar cvmf manifest.txt deos_tt3.jar *

Kør jar på følgende måde:    java -jar deos_tt3.jar
Avatar billede musiigedeo Nybegynder
10. juli 2007 - 15:59 #29
med den kommando "jar cvmf manifest.txt deos_tt3.jar *"  bliver min jar fil til en 1kb fil.
Avatar billede musiigedeo Nybegynder
10. juli 2007 - 16:05 #30
den mangler jo inputtet.. eftersom commandoen skal være
jar cvmf manifest_file jar_file input_file
Avatar billede _carsten Nybegynder
10. juli 2007 - 16:12 #31
jar cvmf manifest.txt deos_tt3.jar *  - tager alle filer med i det dir hvorfra du kører kommandoen
Avatar billede musiigedeo Nybegynder
10. juli 2007 - 16:18 #32
tak for det men nu får jeg bare flere fejl. Ser de dig noget

C:\Egen_fil\JBuilder\jaajaajaa>java -jar deos_tt3.jar
Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: javax/com
m/SerialPortEventListener
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(Unknown Source)
        at java.security.SecureClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.access$000(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClassInternal(Unknown Source)
        at ttteer.<init>(ttteer.java:66)
        at ttteer$4.run(ttteer.java:254)
        at java.awt.event.InvocationEvent.dispatch(Unknown Source)
        at java.awt.EventQueue.dispatchEvent(Unknown Source)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.run(Unknown Source)
Avatar billede musiigedeo Nybegynder
10. juli 2007 - 16:22 #33
Og ttteer.java:66 er linjen i midten i koden nedunder
public ttteer(){
        read = new SimpleRead(this);
    }
Simpleread læser fra serial porten hvergang der er noget data

ttteer$4.run(ttteer.java:254) er ttteer application = new ttteer() som i koden findes i main metoden nedunder
public static void main(String[] args) throws IOException{
       
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                try{
                    ttteer application = new ttteer();
                    application.getJFrame().setVisible(true);
                }catch(IOException w){
                   
                }
            }
        });
    }
Avatar billede _carsten Nybegynder
10. juli 2007 - 16:22 #34
Ja - nu kan den load ttteer, men den kan ikke finde javax/com
m/SerialPortEventListener

Har du den liggende i en anden jar-fil ??
Avatar billede musiigedeo Nybegynder
10. juli 2007 - 16:25 #35
jeg har den i en separat fil. skal den også være samme sted som alle andre filer
Avatar billede _carsten Nybegynder
10. juli 2007 - 16:28 #36
Læg den i samme dir som de andre filer og tilføj linie i dit manifest

Class-Path: MinCommJAR_FIL.jar
Main-Class: ttteer

Lav jar igen
Avatar billede musiigedeo Nybegynder
10. juli 2007 - 16:28 #37
jeg har en jar fil ved navn comm.jar, burde den ik at indeholde SerialPortEventListener
Avatar billede _carsten Nybegynder
10. juli 2007 - 16:29 #38
Sikkert - ved det ikke, men den skal med i dit manifest
Avatar billede musiigedeo Nybegynder
10. juli 2007 - 16:30 #39
altså så bliver min manifest fil
Class-Path: Comm.jar
Main-Class: ttteer

ikke?
Avatar billede musiigedeo Nybegynder
10. juli 2007 - 16:37 #40
Jeg får applicationen frem men så kommer disse fejl
C:\Egen_fil\JBuilder\jaajaajaa>java -jar deos_tt3.jar
Error loading SolarisSerial: java.lang.UnsatisfiedLinkError: no SolarisSerialPar
allel in java.library.path
Caught java.lang.UnsatisfiedLinkError: com.sun.comm.SolarisDriver.readRegistrySe
rial(Ljava/util/Vector;Ljava/lang/String;)I while loading driver com.sun.comm.So
larisDriver
Error loading SolarisSerial: java.lang.UnsatisfiedLinkError: no SolarisSerialPar
allel in java.library.path
Caught java.lang.UnsatisfiedLinkError: com.sun.comm.SolarisDriver.readRegistrySe
rial(Ljava/util/Vector;Ljava/lang/String;)I while loading driver com.sun.comm.So
larisDriver
Avatar billede _carsten Nybegynder
10. juli 2007 - 16:53 #41
Du bruger andre ting også, de skal alle med i manifest

Class-Path: Comm.jar X1.jar X2.jar X3.jar
Main-Class: ttteer
Avatar billede arne_v Ekspert
10. juli 2007 - 17:00 #42
carsten>

Det ligner noget JNI og en native DLL !
Avatar billede musiigedeo Nybegynder
10. juli 2007 - 17:09 #43
burde solarisSerialparallel i være i comm.jar? Når jeg søger efter den kommer jeg bare til det samme sted hvor jeg downloaded comm.jar
Avatar billede musiigedeo Nybegynder
10. juli 2007 - 17:10 #44
ved du hvordan man løser det hvis det er JNI og native DLL
Avatar billede _carsten Nybegynder
10. juli 2007 - 17:16 #45
arne> Ja - så det er vist mere dig der skal på banen end mig :)
Avatar billede musiigedeo Nybegynder
10. juli 2007 - 17:48 #46
Nu er der ik flere fejl. problemet før var at jeg ik brugt en windows comm.jar (tror jeg). Men problemet nu er at jeg kan ik læse eller skrive til porten
Avatar billede musiigedeo Nybegynder
10. juli 2007 - 17:59 #47
Når jeg prøver på send til porten får disse fejl
C:\Egen_fil\JBuilder\jaajaajaa>java -jar deos_tt3.jar
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
        at SimpleRead.writeToport(SimpleRead.java:115)
        at ttteer$1.actionPerformed(ttteer.java:143)
        at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
        at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
        at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
        at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
        at javax.swing.AbstractButton.doClick(Unknown Source)
        at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
        at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown
Source)
        at java.awt.Component.processMouseEvent(Unknown Source)
        at javax.swing.JComponent.processMouseEvent(Unknown Source)
        at java.awt.Component.processEvent(Unknown Source)
        at java.awt.Container.processEvent(Unknown Source)
        at java.awt.Component.dispatchEventImpl(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
        at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
        at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Window.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.EventQueue.dispatchEvent(Unknown Source)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.run(Unknown Source)

Og
SimpleRead.writeToport(SimpleRead.java:115)
er
outputStream.write(sent_byte); //her skriver jeg på porten

ttteer$1.actionPerformed(ttteer.java:143)
read.writeToport();//her læser jeg fra porten
Avatar billede _carsten Nybegynder
10. juli 2007 - 18:32 #48
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException

Du har en NullPointerException == et eller andet du ikke får initieret

Start med at kigge på SimpleRead.writeToport() og gå baglæns
Avatar billede musiigedeo Nybegynder
11. juli 2007 - 11:34 #49
Jeg kan ikke finde årsagen til den... her er koden til ttteer og SimpleRead måske kan du nemme se det
/*
import java.awt.event.KeyEvent;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.Event;
import java.awt.BorderLayout;*/
import java.awt.*;
import java.awt.event.*;

import javax.comm.SerialPortEvent;
//import javax.swing.SwingConstants;
import javax.swing.SwingUtilities;
import javax.swing.KeyStroke;
//import java.awt.Point;

import javax.swing.*;//JButton;
//import javax.swing.plaf.*;

/*import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JMenuItem;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.JFrame;
import javax.swing.JDialog;
//import javax.swing.JTextField;
//import javax.swing.JFrame;
*/
//import java.applet.Applet;
//import java.awt.*;
//import javax.swing.JTextPane;
import java.io.IOException;
//import java.io.*;
//import java.util.*;
//import javax.comm.*;
//import javax.swing.JTextField;
//import javax.swing.JTextPane;
import javax.swing.JTextArea;

public class ttteer {
    private JFrame jFrame = new JFrame();
    private JPanel jContentPane = new JPanel();
    private JMenuBar jJMenuBar = new JMenuBar();
    private JMenu fileMenu = new JMenu();
    private JMenu editMenu = new JMenu();
    private JMenu helpMenu = new JMenu();
    private JMenuItem sendMenuItem = new JMenuItem();
    private JMenuItem printMenuItem = new JMenuItem();
    private JMenuItem ClearScrean = new JMenuItem();
    private JMenuItem cutMenuItem = new JMenuItem();
    private JMenuItem copyMenuItem = new JMenuItem();
    private JMenuItem pasteMenuItem = new JMenuItem();
    private JMenuItem saveMenuItem = new JMenuItem();
    browse11 gennemse = new browse11();
    private SimpleRead read = new SimpleRead(this);
    //SerialPortEvent event;
    JTextArea dataArea = new JTextArea(" ",20,30);
    JScrollPane pane = new JScrollPane(dataArea,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
       
    public ttteer(){
        //this.read = new SimpleRead(this);
    }
   
   
    private JFrame getJFrame()throws IOException {
        //if (jFrame == null) {
            //jFrame = new JFrame();
            jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            jFrame.setJMenuBar(getJJMenuBar());
            jFrame.setSize(400, 400);
            jFrame.setContentPane(getJContentPane());
            jFrame.setTitle("Deos Tera term");
        //}
        return jFrame;
    }
   
    private JPanel getJContentPane() {
        //if (jContentPane == null) {
            //jContentPane = new JPanel();
            jContentPane.setLayout(new FlowLayout()); //FlowLayerout viser nogettttttttttttttttttttt
            jContentPane.add(pane);
        //}
        return jContentPane;
    }
   
    private JMenuBar getJJMenuBar() throws IOException{
        //if (jJMenuBar == null) {
            //jJMenuBar = new JMenuBar();
            jJMenuBar.add(getFileMenu());
            jJMenuBar.add(getEditMenu());
            jJMenuBar.add(getHelpMenu());
        //}
        return jJMenuBar;
    }

    private JMenu getFileMenu() throws IOException{
        //if (fileMenu == null) {
            //fileMenu = new JMenu();
            fileMenu.setText("File");
            fileMenu.add(getSaveMenuItem());
            fileMenu.add(getSendMenuItem());
            fileMenu.add(getClearScrean());
            fileMenu.add(getPrint());
        //}
        return fileMenu;
    }

    private JMenu getEditMenu() {
        //if (editMenu == null) {
            //editMenu = new JMenu();
            editMenu.setText("Edit");
            editMenu.add(getCutMenuItem());
            editMenu.add(getCopyMenuItem());
            editMenu.add(getPasteMenuItem());
        //}
        return editMenu;
    }

    private JMenu getHelpMenu() {
        //if (helpMenu == null) {
            //helpMenu = new JMenu();
            helpMenu.setText("Help");
        //}
        return helpMenu;
    }

    private JMenuItem getSendMenuItem() throws IOException{
        //Readfile2 sendfile = new Readfile2(); //makes an object of the class that opens and sends the file contents
        //if (sendMenuItem == null) {
            //sendMenuItem = new JMenuItem();
            sendMenuItem.setText("send file");
            //throw IOException
            sendMenuItem.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                //gennemse.setVisible(true);
                    //try{//gets the method that loads data to the serial port
                        //Readfile2.send();
                        read.writeToport();
                //}catch(IOException d){
                   
                //}
                }
            });
        //}
        return sendMenuItem;
    }
    //method for clearing the screen.............
    private JMenuItem getClearScrean() throws IOException{
        //if (ClearScrean == null) {
            //ClearScrean = new JMenuItem();
            ClearScrean.setText("Clear Screan");
            ClearScrean.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                      dataArea.setText(" ");
                }
            });
        //}
        return ClearScrean;
    }
    private JMenuItem getPrint() throws IOException{
        //if (printMenuItem == null) {
            //printMenuItem = new JMenuItem();
            printMenuItem.setText("Print");
            printMenuItem.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                      //PrintUtilities.
                }
            });
        //}
        return printMenuItem;
    }
/*
    private JMenuItem getAboutMenuItem() {
        if (aboutMenuItem == null) {
            aboutMenuItem = new JMenuItem();
            aboutMenuItem.setText("About");
            aboutMenuItem.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    JDialog aboutDialog = getAboutDialog();
                    aboutDialog.pack();
                    try{
                    Point loc = getJFrame().getLocation();
                    loc.translate(20, 20);
                    aboutDialog.setLocation(loc);
                    aboutDialog.setVisible(true);
                    }catch(IOException w){
                       
                    }
                   
                }
            });
        }
        return aboutMenuItem;
    }
*/
    public void setData(String txt){//heeeeeeeeeerrrrrrrrrrrrrrrrrrrrr
        dataArea.append(txt);
        dataArea.setEditable(false);
    }
    private JMenuItem getCutMenuItem() {
        //if (cutMenuItem == null) {
            //cutMenuItem = new JMenuItem();
            cutMenuItem.setText("Cut");
            cutMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,
                    Event.CTRL_MASK, true));
        //}
        return cutMenuItem;
    }


    private JMenuItem getCopyMenuItem() {
        //if (copyMenuItem == null) {
            //copyMenuItem = new JMenuItem();
            copyMenuItem.setText("Copy");
            copyMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,
                    Event.CTRL_MASK, true));
        //}
        return copyMenuItem;
    }

    private JMenuItem getPasteMenuItem() {
        //if (pasteMenuItem == null) {
            //pasteMenuItem = new JMenuItem();
            pasteMenuItem.setText("Paste");
            pasteMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,
                    Event.CTRL_MASK, true));
        //}
        return pasteMenuItem;
    }

    private JMenuItem getSaveMenuItem() {
        //if (saveMenuItem == null) {
            //saveMenuItem = new JMenuItem();
            saveMenuItem.setText("Save");
            saveMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,
                    Event.CTRL_MASK, true));
        //}
        return saveMenuItem;
    }

    public static void main(String[] args) throws IOException{
       
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                try{
                    ttteer application = new ttteer();
                    application.getJFrame().setVisible(true);
                }catch(IOException w){
                   
                }
            }
        });
    }
}

import java.io.*;
import java.util.*;
import javax.comm.*;
public class SimpleRead implements SerialPortEventListener {
     
      private static final String SERIALPORT = "COM1";
     
      private CommPortIdentifier portId;
      private Enumeration portList;
      public InputStream inputStream;
      private SerialPort serialPort;
      public static String data = "";
      //public Thread readThread;
      private ttteer parent;
      public static OutputStream outputStream ;
      public static contents_of_afile content = new contents_of_afile();
      public static browse11 browse = new browse11();
      static byte[] dataVector = new byte[10000];

      public SimpleRead(ttteer parent){
         
          this.parent = parent;
          portList = CommPortIdentifier.getPortIdentifiers();
          while (portList.hasMoreElements()) {
                portId = (CommPortIdentifier) portList.nextElement(); 
                if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {
                    if (portId.getName().equals(SERIALPORT)) {
                  try {
                        serialPort = (SerialPort) portId.open("SimpleReadApp", 2000);
                        inputStream = serialPort.getInputStream();
                        outputStream = serialPort.getOutputStream();
                        serialPort.addEventListener(this);
                        serialPort.notifyOnDataAvailable(true);
                        //set config.
                        serialPort.setSerialPortParams(9600,
                            SerialPort.DATABITS_8,
                            SerialPort.STOPBITS_1,
                            SerialPort.PARITY_NONE);
                    } catch (Exception e) {
                      // TODO Auto-generated catch block
                      e.printStackTrace();
                    }
                   
                   
                    }
                }
            }
    }
       
    public void serialEvent(SerialPortEvent event) {
       
            switch(event.getEventType()) {
            case SerialPortEvent.BI:
            case SerialPortEvent.OE:
            case SerialPortEvent.FE:
            case SerialPortEvent.PE:
            case SerialPortEvent.CD:
            case SerialPortEvent.CTS:
            case SerialPortEvent.DSR:
            case SerialPortEvent.RI:
            case SerialPortEvent.OUTPUT_BUFFER_EMPTY:
                break;
            case SerialPortEvent.DATA_AVAILABLE:   
            //data is available - read it!
            byte[] readBuffer = new byte[1];
                       
                try {
                    inputStream.close(); 
                    while (inputStream.available() > 0) {
                        int numBytes = inputStream.read(readBuffer);
                        data = new String(readBuffer);
                        parent.setData(data);
                        System.out.print(data);
                        System.out.print(numBytes);
                    }       
                } catch (IOException e) {
                //TODO Auto-generated catch block
                e.printStackTrace();
                }
                break;
            }
            try{
                inputStream.close();
            }catch (IOException e){
           
            }
            //System.out.print("tst");
        }
    public void writeToport(){
       
        //content = new contents_of_afile(); //makes an object of the contents_of_afile class
        //browse = new browse11();
        String sfile = browse.onBrowseSwing();//gets the method that returns the file name
        File file = new File(sfile);//get the file to be sent... this is actually supposed to be from browse
        try{
            dataVector = contents_of_afile.getBytesFromFile(file);//the file is loaded in the dataVector
        } catch(IOException e){
           
        }
        try{
            int len = dataVector.length;

            for(int i = 0; i < len; i++ ) {
                byte sent_byte = dataVector[i];
                //System.out.print(sent_byte + "test" + "\n");
                  if(dataVector[i] == 0x0D && dataVector[i+1] == 0x0A){
                      try{
                        Thread.sleep(190);
                        }
                        catch(InterruptedException e){
                        }
                  }else{
                        outputStream.write(sent_byte);
                        }
                           
        }
     
        }catch(IOException e){
           
        }
    }
    }
Avatar billede _carsten Nybegynder
11. juli 2007 - 11:45 #50
Lugter lidt som om bruger java'a comm API 2.0

Har du kopieret:
win32com.dll til c:\jdk\bin
javax.comm.properties til c:\jdk\lib

????
Avatar billede _carsten Nybegynder
11. juli 2007 - 11:46 #51
Er det læsbart selvom jeg ikke altid rammer de rigtige taster ? :)
Avatar billede musiigedeo Nybegynder
11. juli 2007 - 12:17 #52
jeg har ik stien c:\jdk\bin og c:\jdk\lib  men C:\Programmer\Java\jdk1.6.0_02\bin og C:\Programmer\Java\jdk1.6.0_02\lib, det er nok det samme ikke?
Avatar billede _carsten Nybegynder
11. juli 2007 - 12:19 #53
Jo - lige nøjagtig!
Avatar billede musiigedeo Nybegynder
11. juli 2007 - 12:22 #54
jeg har kopiet dem dertil men det har desværre ik hjulpet
Avatar billede _carsten Nybegynder
11. juli 2007 - 12:24 #55
Du skal nok lige genstarte, så vidt jeg husker
Avatar billede musiigedeo Nybegynder
11. juli 2007 - 12:30 #56
Det gjorde jeg også Carsten
Avatar billede _carsten Nybegynder
11. juli 2007 - 12:39 #57
Jeg kan ikke se hvad det er, der er mange muligheder, men det er linie 115

Jeg kan ikke se om det er sfile, file eller dataVector der er null
Avatar billede _carsten Nybegynder
11. juli 2007 - 12:43 #58
Du er nødt til at lave noget fejlsøgning a la

String sfile = browse.onBrowseSwing();//gets the method that returns the file name
if(sfile == null)
  System.out.println("sfile er null");

File file = new File(sfile);//get the file to be sent... this is actually supposed to be from browse
if(file == null)
  System.out.println("file er null");

        try{
            dataVector = contents_of_afile.getBytesFromFile(file);//the file is loaded in the dataVector
        } catch(IOException e){
           
        }

if(dataVector == null)
  System.out.println("dataVector er null");
Avatar billede musiigedeo Nybegynder
11. juli 2007 - 12:57 #59
Min application kører som sagt som den skal når jeg kører den i JBuilder og sfile, file og dataVector er aldrig null
Avatar billede _carsten Nybegynder
11. juli 2007 - 13:08 #60
Fik du ikke en NullPointerException, eller det gør du måske ikke mere ???
Avatar billede _carsten Nybegynder
11. juli 2007 - 13:38 #61
Eller kan vi konstatere det rent faktisk virker som det skal ?
Avatar billede musiigedeo Nybegynder
11. juli 2007 - 13:39 #62
Jeg får ik NullPointerException når jeg køre applicationen i JBuilder. De kommer når jeg compiler i cmd prompt med kommandoen java
Avatar billede _carsten Nybegynder
11. juli 2007 - 13:49 #63
Øhh - man compiler med javac ikke java ??

Men hvis kører programmet med java, skal nok prøve:  java -cp STI_TIL_comm.jar -jar deos_tt3.jar

Og jeg er ikke sikker på kommandoen!
Avatar billede musiigedeo Nybegynder
11. juli 2007 - 14:15 #64
Jeg skal også lige nævne at kommandoen "java -jar deos_tt3.jar" får applicationen frem men applicationen virker ik som den gør når jeg kører den i JBuilder. Når jeg kører application i JBuilder læser den fra serial porten hvergang der er noget og jeg kan også sende til serial porten fra den.

Når jeg starter applicationen med "java -jar deos_tt3.jar" og prøver at sende noget får jeg den exception
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
        at SimpleRead.writeToport(SimpleRead.java:113)
        at ttteer$1.actionPerformed(ttteer.java:138)
        at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
        at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
        at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
        at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
        at javax.swing.AbstractButton.doClick(Unknown Source)
        at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
        at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown
Source)
        at java.awt.Component.processMouseEvent(Unknown Source)
        at javax.swing.JComponent.processMouseEvent(Unknown Source)
        at java.awt.Component.processEvent(Unknown Source)
        at java.awt.Container.processEvent(Unknown Source)
        at java.awt.Component.dispatchEventImpl(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
        at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
        at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Window.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.EventQueue.dispatchEvent(Unknown Source)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.run(Unknown Source)
Avatar billede _carsten Nybegynder
11. juli 2007 - 15:27 #65
Ja - du fortæller bare ikke om du prøvede  java -cp STI_TIL_comm.jar -jar deos_tt3.jar

Selvom jeg ikke kan se det skulle være nødvendigt, det burde virke uden.

I en tidligere kom. skrev du Class-Path: Comm.jar skal det ikke være lille 'c' = comm.jar

Det virker som du ikke for comm.jar med classpath

Du kan også prøve at lægge comm.jar i C:\Programmer\Java\jdk1.6.0_02\lib

- ellers må jeg melde pas!
Avatar billede musiigedeo Nybegynder
11. juli 2007 - 16:44 #66
Jeg har Clas-Path: comm.jar i min manifest fil. Mange tak for din tid Carsten
Avatar billede musiigedeo Nybegynder
16. juli 2007 - 11:14 #67
Jeg må også lige lægge det her problem til siden
Avatar billede musiigedeo Nybegynder
28. juli 2007 - 21:08 #68
problemet var at jeg havde 2 versioner af java på min pc
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