質問

I write a program use applet to access serial port via rxtxComm.jar,i change the java.policy,so the applet can access serial port without signed.When the program running on Windows,it's effective.But on ubuntu there have some execptions(java.lang.reflect.InvocationTargetException and "error calling method on npobject" ).In order to solve this problem,i have spent many times to google,i couldn't solve.Is anyone have the same problem? Here is the code about this program.

print.html:

function print() {
    var zplText = $("#zplText").val();
    document.printApplet.print(zplText);
}



<textarea rows="5" cols="6" id="zplText"></textarea>
<a href="#" onClick="print()">print</a>
<applet id="printApplet" alt="" codebase=.. code="zpl/ZplPrint.class">
    <PARAM NAME="archive" VALUE="../lib/RXTXcomm.jar">
</applet>

ZplPrint.java:

public class ZplPrint extends Applet {
static String zpl;
static CommPortIdentifier portId;
static CommPort commPort;
static SerialPort serialPort;
@SuppressWarnings("rawtypes")
static Enumeration portList;
static OutputStream out;

public void print(String zplText) {
    zpl = zplText;
    if (zpl == null) {
        return;
    }
    byte[] zplByte = zpl.getBytes();

    portList = CommPortIdentifier.getPortIdentifiers();
    while (portList.hasMoreElements()) {
        portId = (CommPortIdentifier) portList.nextElement();
        if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {

            try {

                commPort = portId.open(portId.getName(), 2000);
                serialPort = (SerialPort) commPort;

                serialPort.setSerialPortParams(9600, SerialPort.DATABITS_8, SerialPort.STOPBITS_1,
                        SerialPort.PARITY_NONE);
                out = serialPort.getOutputStream();
                out.write(zplByte);
                commPort.close();
            } catch (PortInUseException e) {
                e.printStackTrace();
            } catch (UnsupportedCommOperationException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } catch (NullPointerException e) {
                e.printStackTrace();
            }

            System.out.println("Find CommPort: " + portId.getName());
        }
    }

}

java.policy:

  • permission java.lang.RuntimePermission "loadLibrary.rxtxSerial";
  • permission java.io.FilePermission "${java.home}${/}lib${/}ext${/}x86${/}rxtxSerial.dll", "read";
  • permission java.util.PropertyPermission "gnu.io.log.mode", "read";
  • permission java.util.PropertyPermission "gnu.io.SerialPorts", "write,read";
  • permission java.util.PropertyPermission "gnu.io.rxtx.SerialPorts", "read,write";
  • permission java.util.PropertyPermission "gnu.io.ParallelPorts", "read";
  • permission java.util.PropertyPermission "gnu.io.rxtx.ParallelPorts", "read";
  • permission java.lang.RuntimePermission "modifyThreadGroup";
  • permission java.lang.RuntimePermission "modifyThread";

The first line and second is different from ubuntu,when the ubuntu is:

  • permission java.lang.RuntimePermission "loadLibrary.librxtxSerial";
  • permission java.io.FilePermission "${java.home}${/}lib${/}amd64${/}librxtxSerial.so", "read";
役に立ちましたか?

解決

i had solved myself.

   permission java.lang.RuntimePermission "loadLibrary.rxtxSerial";

   permission java.io.FilePermission "${java.home}${/}lib${/}ext${/}amd64${/}librxtxSerial.so", "read";

   permission java.io.FilePermission "${java.home}${/}lib${/}ext${/}librxtxSerial.so", "read";

   permission java.io.FilePermission "${/}dev", "read";

   permission java.util.PropertyPermission "gnu.io.log.mode", "read";

   permission java.util.PropertyPermission "gnu.io.SerialPorts", "write,read";

   permission java.util.PropertyPermission "gnu.io.rxtx.SerialPorts", "read,write";

   permission java.util.PropertyPermission "gnu.io.ParallelPorts", "read";

   permission java.util.PropertyPermission "gnu.io.rxtx.ParallelPorts", "read";

   permission java.lang.RuntimePermission "modifyThreadGroup";

   permission java.lang.RuntimePermission "modifyThread";
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top