Posts: 12
Joined: Sun Mar 11, 2018 3:09 pm

Could not find or load main class SerialTestGET.

Mon Mar 12, 2018 1:32 pm

I am trying to execute the program on Linux , raspberry pi and getting error

Code: Select all

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;
import gnu.io.CommPortIdentifier;
import gnu.io.SerialPort;
import gnu.io.SerialPortEvent;
import gnu.io.SerialPortEventListener;
import java.util.Enumeration;
import java.net.HttpURLConnection;
import java.net.URL;

public class SerialTestGET implements SerialPortEventListener {
    SerialPort serialPort;
    static int sensorValue = 0;
    /** The port we're normally going to use. */
    private static final String PORT_NAMES[] = {
        // Mac OS X
        // Raspberry Pi
        // Linux
        // Windows
* A BufferedReader which will be fed by a InputStreamReader
* converting the bytes into characters
* making the displayed results codepage independent
    private BufferedReader input;
    /** The output stream to the port */
    private OutputStream output;
    /** Milliseconds to block while waiting for port open */
    private static final int TIME_OUT = 2000;
    /** Default bits per second for COM port. */
    private static final int DATA_RATE = 9600;

    public void initialize() {
        // the next line is for Raspberry Pi and
        // gets us into the while loop and was suggested here was suggested 
        System.setProperty("gnu.io.rxtx.SerialPorts", "/dev/ttyACM0");

        CommPortIdentifier portId = null;
        Enumeration portEnum = CommPortIdentifier.getPortIdentifiers();

        //First, Find an instance of serial port as set in PORT_NAMES.
        while (portEnum.hasMoreElements()) {
            CommPortIdentifier currPortId = (CommPortIdentifier) portEnum.nextElement();
            for (String portName: PORT_NAMES) {
                if (currPortId.getName().equals(portName)) {
                    portId = currPortId;
        if (portId == null) {
            System.out.println("Could not find COM port.");

        try {
            // open serial port, and use class name for the appName.
            serialPort = (SerialPort) portId.open(this.getClass().getName(), TIME_OUT);

            // set port parameters
            serialPort.setSerialPortParams(DATA_RATE, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);

            // open the streams
            input = new BufferedReader(new InputStreamReader(serialPort.getInputStream()));
            output = serialPort.getOutputStream();

            // add event listeners
        } catch(Exception e) {

* This should be called when you stop using the port.
* This will prevent port locking on platforms like Linux.
    public synchronized void close() {
        if (serialPort != null) {

* Handle an event on the serial port. Read the data and print it.
    public synchronized void serialEvent(SerialPortEvent oEvent) {
        if (oEvent.getEventType() == SerialPortEvent.DATA_AVAILABLE) {
            try {
                String inputLine = input.readLine();
            } catch(Exception e) {
        // Ignore all the other eventTypes, but you should consider the other ones.

    // HTTP GET request
    public void sendGet(String inputLine) throws Exception {

        try {
            //if difference is more than 3 then send data to SAP HANA
            if (inputLine != null && inputLine.length() > 0 && Math.abs(sensorValue - Integer.parseInt(inputLine)) > 3) {

                sensorValue = Integer.parseInt(inputLine);
                //Considering that A001 sensor is connection with this raspberry pie for now
                //we can even pass this with command line but for simplicityhardcoding it
                //Replace with your HANA server URL and port number
                String url = " ";

                url = url + inputLine;

                URL obj = new URL(url);
                HttpURLConnection con = (HttpURLConnection) obj.openConnection();

                // optional default is GET

                //add request header
                //con.setRequestProperty("User-Agent", USER_AGENT);
                int responseCode = con.getResponseCode();
                if (responseCode == 200) {
                    System.out.println("OK value:" + inputLine);
                } else {
                    System.out.println("Error: Response code " + responseCode);

            System.out.println("OK value: Less than 3");
        } catch(Exception e) {


    public static void main(String[] args)
    throws Exception {
        SerialTestGET main = new SerialTestGET();

        Thread t = new Thread() {
            public void run() {
                //the following line will keep this app alive for 1000 seconds,
                //waiting for events to occur and responding to them (printing incoming messages to console).
                try {
                } catch(InterruptedException ie) {}
All required files are placed in specified folders.
execution of file
path.jpg (48.13 KiB) Viewed 2948 times
file path
file.jpg (10.89 KiB) Viewed 2948 times

User avatar
Posts: 16
Joined: Tue Mar 06, 2018 6:26 am

Re: Could not find or load main class SerialTestGET.

Tue Mar 13, 2018 1:15 am

You may have your CLASSPATH environment variable set to something that does not include the current directory. It is generally NOT a good idea to have CLASSPATH set at all. See
https://docs.oracle.com/javase/8/docs/t ... spath.html

Check its value by typing

Code: Select all

if it has a value try clearing it by typing

Code: Select all

and try running again.

The warning you are getting from the compiler is because you specify '-target 1.6'. The compiler expects to be given a 1.6 runtime jar file in the '-bootclasspath' option.
If you really need java6 compatible class files, add

Code: Select all

-bootclasspath <PATH_TO_JAVA6>/rt.jar
to your compile options. Otherwise just remove the -source and -target options.

See the Cross-Compilation Options at
https://docs.oracle.com/javase/8/docs/t ... javac.html
for more details.
Have Fun ...

Posts: 12
Joined: Sun Mar 11, 2018 3:09 pm

Re: Could not find or load main class SerialTestGET.

Tue Mar 13, 2018 3:38 am

I tried checking the class path value and found its empty .
class.JPG (18.69 KiB) Viewed 2915 times

Posts: 12
Joined: Sun Mar 11, 2018 3:09 pm

Re: Could not find or load main class SerialTestGET.

Tue Mar 13, 2018 10:01 am

Just for reference:

There is a sample java file TestJ.java, I created to test if Java is working with "HelloWorld" message.

TestJ.java is executing properly.

Posts: 12
Joined: Sun Mar 11, 2018 3:09 pm

Solved: Could not find or load main class SerialTestGET.

Wed Mar 14, 2018 12:20 pm

Solved : used below statement and it executed

java -Djava.library.path=/usr/lib/jni -cp /usr/share/java/RXTXcomm.jar:. SerialTestGET

Return to “Java”