I'm developing in Java but I believe I'm missing some basic knowledge besides coding about building, dependencies, projects, manifests, classpath etc.
I'm going to develop a Java tool which will read and set values from a PLC. I discovered moka7. The documentation says:
Moka7 is deployed as a set of source code classes that you can use in your Java project to communicate with S7 PLCs.
I first, downloaded moka7 and imported the Eclispe project into my IntelliJ IDEA (Windows 10). I was able to build and run the ClientDemo program. Now I wanted to do the same on linux. When I extracted moka7 and I try to run the binaries I get:
java ClientDemo
Error: Could not find or load main class ClientDemo
When I try to compile the source myself I'm getting the following:
/opt/moka7-full-1.0.2/Moka7-Eclipse/src/Moka7Demo# javac ClientDemo.java
ClientDemo.java:28: error: package Moka7 does not exist
import Moka7.*;
^
ClientDemo.java:41: error: cannot find symbol
private static final S7Client Client = new S7Client();
^
symbol: class S7Client
location: class ClientDemo
ClientDemo.java:41: error: cannot find symbol
private static final S7Client Client = new S7Client();
^
symbol: class S7Client
location: class ClientDemo
ClientDemo.java:49: error: cannot find symbol
private static int CurrentStatus = S7.S7CpuStatusUnknown;
^
symbol: variable S7
location: class ClientDemo
ClientDemo.java:72: error: cannot find symbol
System.out.println(S7.GetPrintableStringAt(Buffer, i-15, 16));
^
symbol: variable S7
location: class ClientDemo
ClientDemo.java:83: error: cannot find symbol
System.out.println(S7.GetPrintableStringAt(Buffer, Size-r, r));
^
symbol: variable S7
location: class ClientDemo
ClientDemo.java:112: error: cannot find symbol
System.out.println(S7Client.ErrorText(Code));
^
symbol: variable S7Client
location: class ClientDemo
ClientDemo.java:117: error: cannot find symbol
S7BlockInfo Block = new S7BlockInfo();
^
symbol: class S7BlockInfo
location: class ClientDemo
ClientDemo.java:117: error: cannot find symbol
S7BlockInfo Block = new S7BlockInfo();
^
symbol: class S7BlockInfo
location: class ClientDemo
ClientDemo.java:144: error: cannot find symbol
IntByRef SizeRead = new IntByRef(0);
^
symbol: class IntByRef
location: class ClientDemo
ClientDemo.java:144: error: cannot find symbol
IntByRef SizeRead = new IntByRef(0);
^
symbol: class IntByRef
location: class ClientDemo
ClientDemo.java:161: error: cannot find symbol
int Result = Client.ReadArea(S7.S7AreaDB, DBSample, 0, DataToMove, Buffer);
^
symbol: variable S7
location: class ClientDemo
ClientDemo.java:172: error: cannot find symbol
int Result = Client.WriteArea(S7.S7AreaDB, DBSample, 0, DataToMove, Buffer);
^
symbol: variable S7
location: class ClientDemo
ClientDemo.java:204: error: cannot find symbol
IntByRef PlcStatus = new IntByRef(S7.S7CpuStatusUnknown);
^
symbol: class IntByRef
location: class ClientDemo
ClientDemo.java:204: error: cannot find symbol
IntByRef PlcStatus = new IntByRef(S7.S7CpuStatusUnknown);
^
symbol: class IntByRef
location: class ClientDemo
ClientDemo.java:204: error: cannot find symbol
IntByRef PlcStatus = new IntByRef(S7.S7CpuStatusUnknown);
^
symbol: variable S7
location: class ClientDemo
ClientDemo.java:210: error: illegal start of type
switch (PlcStatus.Value)
^
ClientDemo.java:212: error: cannot find symbol
case S7.S7CpuStatusRun :
^
symbol: variable S7
location: class ClientDemo
ClientDemo.java:215: error: cannot find symbol
case S7.S7CpuStatusStop :
^
symbol: variable S7
location: class ClientDemo
ClientDemo.java:248: error: cannot find symbol
case S7.S7CpuStatusRun :
^
symbol: variable S7
location: class ClientDemo
ClientDemo.java:253: error: cannot find symbol
case S7.S7CpuStatusStop :
^
symbol: variable S7
location: class ClientDemo
ClientDemo.java:264: error: cannot find symbol
S7OrderCode OrderCode = new S7OrderCode();
^
symbol: class S7OrderCode
location: class ClientDemo
ClientDemo.java:264: error: cannot find symbol
S7OrderCode OrderCode = new S7OrderCode();
^
symbol: class S7OrderCode
location: class ClientDemo
ClientDemo.java:274: error: cannot find symbol
S7CpuInfo CpuInfo = new S7CpuInfo();
^
symbol: class S7CpuInfo
location: class ClientDemo
ClientDemo.java:274: error: cannot find symbol
S7CpuInfo CpuInfo = new S7CpuInfo();
^
symbol: class S7CpuInfo
location: class ClientDemo
ClientDemo.java:287: error: cannot find symbol
S7CpInfo CpInfo = new S7CpInfo();
^
symbol: class S7CpInfo
location: class ClientDemo
ClientDemo.java:287: error: cannot find symbol
S7CpInfo CpInfo = new S7CpInfo();
^
symbol: class S7CpInfo
location: class ClientDemo
ClientDemo.java:318: error: cannot find symbol
S7Szl SZL = new S7Szl(1024);
^
symbol: class S7Szl
location: class ClientDemo
ClientDemo.java:318: error: cannot find symbol
S7Szl SZL = new S7Szl(1024);
^
symbol: class S7Szl
location: class ClientDemo
ClientDemo.java:333: error: cannot find symbol
S7Protection Protection = new S7Protection();
^
symbol: class S7Protection
location: class ClientDemo
ClientDemo.java:333: error: cannot find symbol
S7Protection Protection = new S7Protection();
^
symbol: class S7Protection
location: class ClientDemo
ClientDemo.java:360: error: cannot find symbol
Client.SetConnectionType(S7.OP);
^
symbol: variable S7
location: class ClientDemo
ClientDemo.java:383: error: cannot find symbol
BlockInfo(S7.Block_SFC,1); // Get SFC 1 info (always present in a CPU)
^
symbol: variable S7
location: class ClientDemo
33 errors
When I create a jar file using this node which refers to this blog, i can run the jar:
root@rpi:/opt# java -jar Moka7-Eclipse.jar
Usage
client <IP> [Rack=0 Slot=2]
Example
client 192.168.1.101 0 2
or
client 192.168.1.101
root@rpi:/opt#
What am I doing wrong?
How to code properly in Java on linux?
Or do I just code on Windows in any IDEA and use the jar way to run on linux?