Hy ,
I have a example tooken from the internet , and compiler gives me this error :
The type CommPortIdentifier is not accessible due to restriction on required library C:\Program Files\Java\jre6\lib\ext\comm.jar
The code is:
import java.awt.*;
import java.io.*;
import javax.comm.*;
import java.util.*;
/**
* Open a serial port using Java Communications.
*
*/
class CommPortOpen {
/** How long to wait for the open to finish up. */
public static final int TIMEOUTSECONDS = 30;
/** The baud rate to use. */
public static final int BAUD = 9600;
/** The parent Frame, for the chooser. */
protected Frame parent;
/** The input stream */
protected DataInputStream is;
/** The output stream */
protected PrintStream os;
/** The last line read from the serial port. */
protected String response;
/** A flag to control debugging output. */
protected boolean debug = true;
/** The chosen Port Identifier */
CommPortIdentifier thePortID;
/** The chosen Port itself */
CommPort thePort;
public static void main(String[] argv)
throws IOException, NoSuchPortException, PortInUseException,
UnsupportedCommOperationException {
new CommPortOpen(null).converse();
System.exit(0);
}
/* Constructor */
public CommPortOpen(Frame f) throws IOException, NoSuchPortException, PortInUseException,UnsupportedCommOperationException {
// Use the PortChooser from before. Pop up the JDialog.
PortChooser chooser = new PortChooser(null);
String portName = null;
do {
chooser.setVisible(true);
// Dialog done. Get the port name.
portName = chooser.getSelectedName();
if (portName == null)
System.out.println("No port selected. Try again.\n");
} while (portName == null);
// Get the CommPortIdentifier.
thePortID = chooser.getSelectedIdentifier();
// Now actually open the port.
// This form of openPort takes an Application Name and a timeout.
//
System.out.println("Trying to open " + thePortID.getName() + "...");
switch (thePortID.getPortType()) {
case CommPortIdentifier.PORT_SERIAL:
thePort = thePortID.open("DarwinSys DataComm",
TIMEOUTSECONDS * 1000);
SerialPort myPort = (SerialPort) thePort;
//set up the serial port
myPort.setSerialPortParams(BAUD, SerialPort.DATABITS_8,
SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);
break;
case CommPortIdentifier.PORT_PARALLEL:
thePort = thePortID.open("DarwinSys Printing",
TIMEOUTSECONDS * 1000);
ParallelPort pPort = (ParallelPort)thePort;
// Tell API to pick "best available mode" - can fail!
// myPort.setMode(ParallelPort.LPT_MODE_ANY);
// Print what the mode is
int mode = pPort.getMode();
switch (mode) {
case ParallelPort.LPT_MODE_ECP:
System.out.println("Mode is: ECP");
break;
case ParallelPort.LPT_MODE_EPP:
System.out.println("Mode is: EPP");
break;
case ParallelPort.LPT_MODE_NIBBLE:
System.out.println("Mode is: Nibble Mode.");
break;
case ParallelPort.LPT_MODE_PS2:
System.out.println("Mode is: Byte mode.");
break;
case ParallelPort.LPT_MODE_SPP:
System.out.println("Mode is: Compatibility mode.");
break;
// ParallelPort.LPT_MODE_ANY is a "set only" mode;
// tells the API to pick "best mode"; will report the
// actual mode it selected.
default:
throw new IllegalStateException
("Parallel mode " + mode + " invalid.");
}
break;
default:// Neither parallel nor serial??
throw new IllegalStateException("Unknown port type " + thePortID);
}
//Get the input and output streams
//Printers can be write-only
try {
is = new DataInputStream(thePort.getInputStream());
}
catch (IOException e) {
System.err.println("Can't open input stream: write-only");
is = null;
}
os = new PrintStream(thePort.getOutputStream(), true);
}
/** This method will be overridden by non-trivial subclasses
* to hold a conversation.
*/
protected void converse() throws IOException {
System.out.println("Ready to read and write port.");
// Input/Output code not written -- must subclass.
// Finally, clean up.
if (is != null)
is.close();
os.close();
}
}
I googled it , found some solutions but didn`t find the ways to deal with it