3 Replies Latest reply: Dec 20, 2012 4:52 PM by Hinkmond-Oracle RSS

    java.io.IOException: Invalid argument

    Andy Tael-Oracle
      I have written a small piece of Java code, well I borrowed it from a blog and I just can't get it to work. Note that I am a novice developer and even more novice Embedded developer.
       * To change this template, choose Tools | Templates
       * and open the template in the editor.
      package atael;
      import java.io.FileWriter;
      import java.io.IOException;
       * @author atael
      public class PiGPIO {
          static final String GPIO_OUT = "out";
          static final String GPIO_ON = "1";
          static final String GPIO_OFF = "0";
          static final String GPIO_CH00="0";
           * @param args the command line arguments
          public static void main(String[] args) {
              try {
                  /*** Init GPIO port for output ***/
                  // Open file handles to GPIO port unexport and export controls
                  FileWriter unexportFile = new FileWriter("/sys/class/gpio/unexport");
                  FileWriter exportFile = new FileWriter("/sys/class/gpio/export");
                  // Reset the port
                  // Set the port for use
                  // Open file handle to port input/output control
                  FileWriter directionFile =
                          new FileWriter("/sys/class/gpio/gpio"+GPIO_CH00+"/direction");
                  // Set port for output
                  /*** Send commands to GPIO port ***/
                  // Open file handle to issue commands to GPIO port
                  FileWriter commandFile = new FileWriter("/sys/class/gpio/gpio"+GPIO_CH00+
                  // Loop forever
                  while (true) {
                      // Set GPIO port ON
                      // Wait for a while
                      // Set GPIO port OFF
                      // Wait for a while
              } catch (IOException | InterruptedException exception) {
      It complies nicely and I transfer it to my RaspBerry Pi. When I try to execute my application like this:

      root@raspberrypi:~# java -jar /home/pi/atael.jar

      I get the following error:
      java.io.IOException: Invalid argument
              at java.io.FileOutputStream.writeBytes(Native Method)
              at java.io.FileOutputStream.write(FileOutputStream.java:318)
              at sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:221)
              at sun.nio.cs.StreamEncoder.implFlushBuffer(StreamEncoder.java:291)
              at sun.nio.cs.StreamEncoder.implFlush(StreamEncoder.java:295)
              at sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:141)
              at java.io.OutputStreamWriter.flush(OutputStreamWriter.java:229)
              at atael.PiGPIO.main(PiGPIO.java:35)
      I am using the following version of Java SE:
      root@raspberrypi:~# java -version
      java version "1.7.0_10"
      Java(TM) SE Embedded Runtime Environment (build 1.7.0_10-b18, headless)
      Java HotSpot(TM) Embedded Client VM (build 23.6-b04, mixed mode)
      Any idea what I am doing wrong?