Kann kein java.util.concurrent.lock importieren

[moR-pH-euS]

Magnum P.I.
Hallo,
ich benutze Eclipse 3.2.1 unter Mac OS X 10.4.9 und ein "java -version" im terminal zeigt mir folgende java-version an:

java -version
java version "1.5.0_07"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_07-164)
Java HotSpot(TM) Client VM (build 1.5.0_07-87, mixed mode)

Zur zeit muss ich fürs Studium in die Thread-Programmierung einsteigen und muss jetzt eine Klasse schreiben mit Locks. In dem Project habe ich bei den Properties, unter "JavaCompiler" Projektspezifische Einstellungen aktiviert und das "Compiler compliance level" auf 5.0 gestellt, auch "Generated .class files compatibility" und "Source compatibility" sind auf 5.0 gestellt. Allerdings kann ich keine Locks importieren. Wenn ich "import java.util.con" eingebe, bietet mir Eclipse nur ConcurrentModificationException an, aber kein Concurrent. Mit der Default-Einstellung, von 1.4 bei "Java Compiler", gibt es auch kein java.util.concurrent.locks.
Auch wenn ich nur "import java.util.*" in meine Klasse schreibe und einfach

private final Lock lock

in meine Klasse schreibe, meckert er, das er Lock nicht finden kann und bietet mir als import-Möglichkeit "import com.sun.corba.se.internal.orbutil.Lock;" an.
Was ist denn da los bzw. wie komme ich an das richtige Lock ran?
Danke
 
Ich habe nochmal ein komplett neues Projekt angelegt und explizit java 1.5.0 ausgewählt und jetzt geht es. Komisch das er die Settings in dem alten Projekt nicht übernommen hat...
 
Hallo,
ich benutze Eclipse 3.2.1 unter Mac OS X 10.4.9 und ein "java -version" im terminal zeigt mir folgende java-version an:

java -version
java version "1.5.0_07"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_07-164)
Java HotSpot(TM) Client VM (build 1.5.0_07-87, mixed mode)

Zur zeit muss ich fürs Studium in die Thread-Programmierung einsteigen und muss jetzt eine Klasse schreiben mit Locks. In dem Project habe ich bei den Properties, unter "JavaCompiler" Projektspezifische Einstellungen aktiviert und das "Compiler compliance level" auf 5.0 gestellt, auch "Generated .class files compatibility" und "Source compatibility" sind auf 5.0 gestellt. Allerdings kann ich keine Locks importieren. Wenn ich "import java.util.con" eingebe, bietet mir Eclipse nur ConcurrentModificationException an, aber kein Concurrent. Mit der Default-Einstellung, von 1.4 bei "Java Compiler", gibt es auch kein java.util.concurrent.locks.
Auch wenn ich nur "import java.util.*" in meine Klasse schreibe und einfach

private final Lock lock

in meine Klasse schreibe, meckert er, das er Lock nicht finden kann und bietet mir als import-Möglichkeit "import com.sun.corba.se.internal.orbutil.Lock;" an.
Was ist denn da los bzw. wie komme ich an das richtige Lock ran?
Danke

Hallo moR-pH-euS,

also so wie ich das überblicke hast Du lediglich das jre installiert, würde Dir aber zum JDK bzw SDK raten..

Herausfinden welche javaversion installiert ist kannst Du im Termimal mit Eingabe
java -version (haste ja schon *grins*)
und java -fullversion
die optionen des compilers fragst Du mit javac ab
den appletviewer bekommst Du mit der Eingabe appletviewer angezeigt..

So etwas alllgemeines noch zur Thread-programmierung:

Die Programmierung mit Threads erfordert viel Interaktion zwischen unterschiedlichen Objekten.

Mal ein Beispiel: DigitalClock.java

Code:
/*
 * Main.java
 *
 * Created on 29. Mai 2007, 23:04
 *
  */

package digitalclock;

/**
 *
 * @author rudy
 */
public class Main {
    
    /** Creates a new instance of Main */
    public Main() {
    }
    
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
    }
    
}

Code:
/*
 * DigitalClock.java
 *
 * Created on 29. Mai 2007, 23:08
 *
 */

package digitalclock;

import java.awt.*;
import javax.swing.*;
import java.util.*;

public class DigitalClock extends JFrame {
	WatchPanel watch = new WatchPanel();
	
	public DigitalClock() {
		super("Digital Clock");
		setSize(345, 60);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		JPanel pane = new JPanel();
		pane.setLayout(new GridLayout(1, 1, 15, 15));
		pane.add(watch);
		setContentPane(pane);
		show();
	}
	
	public static void main(String [] arguments) {
		DigitalClock clock = new DigitalClock();
	}
}

class WatchPanel extends JPanel implements Runnable {
	Thread runner;
	
	WatchPanel() {
		if (runner == null) {
			runner = new Thread(this);
			runner.start();
		}
	}
	
	public void run() {
		while (true) {
			repaint();
			try {
				Thread.sleep(1000);
			} catch (InterruptedException e) {}
		}
	}
	
	public void paintComponent(Graphics comp) {
		Graphics2D comp2D = (Graphics2D)comp;
		Font type = new Font("Serif", Font.BOLD, 24);
		comp2D.setFont(type);
		comp2D.setColor(getBackground());
		comp2D.fillRect(0, 0, getSize().width, getSize().height);
		GregorianCalendar day = new GregorianCalendar();
		String time = day.getTime().toString();
		comp2D.setColor(Color.black);
		comp2D.drawString(time, 5, 25);
	}
}


Gruss rudy
 
also so wie ich das überblicke hast Du lediglich das jre installiert
Interessant wäre ja nun, an was du das festgestellt haben willst. Im Übrigen stelle ich fest, daß du das mit den Quellenangaben immer noch nicht verstanden hast, sondern einfach weiter kopiert wird. Toll ist auch der erste Code-Block, der absolut überflüssig ist. Und den zweiten Code-Block hättest du doch einfach durch einen Link auf www.cadenhead.org/book/21java/source/day13/DigitalClock.java ersetzen können...
 
Interessant wäre ja nun, an was du das festgestellt haben willst. Im Übrigen stelle ich fest, daß du das mit den Quellenangaben immer noch nicht verstanden hast, sondern einfach weiter kopiert wird. Toll ist auch der erste Code-Block, der absolut überflüssig ist. Und den zweiten Code-Block hättest du doch einfach durch einen Link auf www.cadenhead.org/book/21java/source/day13/DigitalClock.java ersetzen können...

Hallo,

zuersteinmal gebe ich Dir in einem Punkt Recht den ersten Code Block kann man sich sparen muss man aber nicht, man kann auch ein package erstellen....

So dann habe ich das nicht kopiert übrigens ist der Quellcode frei und den findest Du nicht nur in Deinem genannten Beispiel Link.

Nein den habe ich schon selbst getippt und getestet und das Beispiel funktioniert !

Also nicht gleich aus der Hüfte schiessen und jetzt gehe ich ins Bett vielleicht sehen wir uns ja in Berlin würde mich freuen...

Viele Grüsse ein müder rudy
 
Das eigentlich überflüssige hier ist, dass das Problem längst gelöst ist.
 
Das eigentlich überflüssige hier ist, dass das Problem längst gelöst ist.

Jaein ... :)

Ich habe nochmal ein komplett neues Projekt angelegt und explizit java 1.5.0 ausgewählt und jetzt geht es. Komisch das er die Settings in dem alten Projekt nicht übernommen hat...

... es wurde etwas "unbefriedigend" geloest ...

.... In dem Project habe ich bei den Properties, unter "JavaCompiler" Projektspezifische Einstellungen aktiviert und das "Compiler compliance level" auf 5.0 gestellt, auch "Generated .class files compatibility" und "Source compatibility" sind auf 5.0 gestellt. Allerdings kann ich keine Locks importieren. ....

Folgendes, Die Propertiy Einstellung "Java Compiler" haben nur, wie es ja da steht, etwas mit dem Kompelieren der .class Files zu tun. Nix mit den verwenden der Librarys von JDK 1.5. im Editor bzw. beim Linken. D.h. das Projekt wird mit dem Java Kompiler 1.5 Kompeliert und das fertige Java Programm laeuft dann auch nur mit 1.5. unabhaengig mit welchen Librarys du es verlinkt hast.

Um das Problem zu loesen, muesstest du in den Propertie Einstellung des Projects das "Java Build Path" anpassen. Dort muesste dann unter dem Reiter "Librarys" die Library Bibliothek "JRE System Library [jdk1.5.0_11]" import werden. Dann kannst du die JDK Librarys von 1.5. in dem Project verwenden.

Manchmal "Zickt" Eclipse auch etwas rum, dann hilft auch ein "Cleaning" des Projects. Den aufruf findest du unter dem Menuepunkt "Project"->"Clean" ... und dann dein Project oder alle Projekt auswaehlen.

So hoffe damit geholfen zuhaben :)
 
Um das Problem zu loesen, muesstest du in den Propertie Einstellung des Projects das "Java Build Path" anpassen. Dort muesste dann unter dem Reiter "Librarys" die Library Bibliothek "JRE System Library [jdk1.5.0_11]" import werden. Dann kannst du die JDK Librarys von 1.5. in dem Project verwenden.

Hey, vielen Dank. Habe es gerade mit dem alten Projekt getestet und hat ohne das Cleaning funktioniert.
 
Zurück
Oben