Vraag


  • nielsgeode
  • Registratie: Juli 2003
  • Laatst online: 08-09 21:29
Ik wil erg graag het op java gebaseerde Simple Stackshot Controller runnen op mijn Raspberry Pi 4 met 4GB ram (Raspian Stretch).

Alle software zelf is geupdate (sudo apt-get update, upgrade, dist-upgrade) en ook java lijkt goed geinstalleerd. In ieder geval is er een map /usr/java/jre1.8.0_221. Verder zijn FTDI drivers geinstalleerd omdat die nodig zijn voor de hardware.

Met het volgende commando probeer ik het te starten. Echter, er gebeurt niets. Eerst kreeg ik nog een foutmelding dat configuration.props leeg is. De software runnen in windows genereert een configuration.props file waarvan ik de inhoud in de Raspberry-configuration.props-file heb gezet.
sudo java -jar StackShotCtrl.jar
Met een -verbose optie krijg ik een enorme bak output waarvan ik echt geen idee heb wat ik ermee moet. Wie kan me helpen? De output is hier te vinden

[ Voor 22% gewijzigd door nielsgeode op 14-09-2019 21:09 ]

Alle reacties


  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 10-09 22:48

Hero of Time

Moderator LNX

There is only one Legend

Het begint al met dit:
code:
1
opened: /usr/lib/jvm/java-11-openjdk-armhf/lib/modules

Je hebt OpenJDK geïnstalleerd. Niet alle Java applicaties werken hiermee. Ga eens kijken of het in een VM of je gewone machine met Linux wel werkt. Doet het daar ook niet, installeer dan de Oracle Java en probeer opnieuw. Werkt het daar wel in je testomgeving? Dan is dat het probleem op je Pi en zal je de Oracle Java voor de ARM architectuur moeten installeren. Maar dan moet die er natuurlijk wel zijn.

Is er trouwens een reden waarom je het als root uitvoert?

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

Verwijderd

Heb je ook java 11 geinstalleerd staan? .

[ Voor 66% gewijzigd door Verwijderd op 15-09-2019 01:27 ]


Acties:
  • 0 Henk 'm!

  • nielsgeode
  • Registratie: Juli 2003
  • Laatst online: 08-09 21:29
@Hero of Time Klopt, het is OpenJDK. Die heb ik nu gedeinstalleerd en ik probeer oracle java8 te installeren, maar nog zonder succes. Heb diverse instructie gevonden die vooral over Raspian Jessie gaan. Ik draai Stretch. Als ik de instructies volg krijg ik 'oracle-java8-installer' has no installation candidate.

@Verwijderd Heb ik niet, het lukt me ook nog niet.

Acties:
  • 0 Henk 'm!

  • GuntherDW
  • Registratie: November 2004
  • Laatst online: 29-12-2022
Aangezien we de echte exceptions/error meldingen niet te zien krijgen kunnen we niet veel doen buiten gissen eigenlijk.

@Hero of Time OpenJDK 8 en Oracle's "eigen versie" verschillen tegenwoordig niet bijster veel meer, tenzij je specifieke classes nodig hebt, waaronder sun.* bijvoorbeeld.
Alsook "zomaar" Java11 gaan installeren is ook niet zo slim als de app Java8 target. Sommige libraries kunnen hier niet mee om.

Aangezien je de JDK hebt geinstalleerd zou je met iets als JConsole/VisualVM kunnen nakijken om te zien waar ergens die vastloopt ofzo
Draai je dit allemaal via een SSH verbinding of heb je een volledige WM geinstalleerd staan en runnende op de Pi?

Je hebt toch schrijfrechten in de folder, right? Aangezien je al met sudo e.d. aan de slag gaat?
Kan zijn dat de .properties files anders moet in Linux tov Windows en dat het daarop hakelt?

Je zegt alsook dat "er niets gebeurt", wil je daarmee zeggen dat je geen output krijgt en de applicatie eigenlijk gewoon stopt of freezet het? Er is veel, yet at the same time maar weinig info :P.

Trouwens, mispak je niet in de lib te downloaden. Het is wel Java, maar aangezien er "drivers" nodig zijn, zijn er native libraries bij gemoeid. Je hebt de juiste architecture genomen, toch?

Ik denk dat de oorzaak iets simpeler ligt, maargoed, ken de applicatie zelf niet dus kan niet zomaar zeggen waaraan exact het ligt.

[ Voor 35% gewijzigd door GuntherDW op 16-09-2019 10:08 ]


Acties:
  • 0 Henk 'm!

  • nielsgeode
  • Registratie: Juli 2003
  • Laatst online: 08-09 21:29
@GuntherDW

Ik ben een behoorlijke beginnner met Linux, en zal proberen zo goed mogelijk te antwoorden :)

Ik draai 'echt' Raspian Buster met monitor via HDMI en toetsenbord en muis via USB. Als ik vanuit een terminal intyp:
java -jar StackShotCtrl.jar
of
sudo java -jar StackShotCtrl.jar
Dan lijkt er in beide gevallen niets te gebeuren. Ik krijg de command prompt weer terug en zie geen vensters openen en weer verdwijnen of vastlopen. Met de -verbose optie krijg ik de output die in de openingspost staat gelinkt.

Ik heb zeker schrijfrechten, het staat allemaal ook gewoon in mijn /home/pi/Downloads folder.
Voor JConsole vind ik dit en het ziet er nogal overweldigend uit. Zal later vandaag eens kijken of ik er iets uit krijg.

De properties file lijkt alleen wat xml te zijn en ik zou geen reden kunnen verzinnen waarom dat ding in linux anders is dan in windows. Uitsluiten kan ik het niet.
Trouwens, mispak je niet in de lib te downloaden. Het is wel Java, maar aangezien er "drivers" nodig zijn, zijn er native libraries bij gemoeid. Je hebt de juiste architecture genomen, toch?
Wat bedoel je hier precies?

[ Voor 10% gewijzigd door nielsgeode op 16-09-2019 10:15 ]


Acties:
  • 0 Henk 'm!

  • GuntherDW
  • Registratie: November 2004
  • Laatst online: 29-12-2022
Als je niet echt je weg kent in Linux en/of Java is VisualVM misschien wat beter. Al is dat soms een aparte download of package wat je moet installeren.

VisualVM is iets gebruikersvriendelijker op dat vlak.

Maar aangezien je zegt dat je gewoon terug je terminal terugkrijgt vraag ik me af of het ergens crasht of gewoon exit. Wat voor exit code krijg je terug? Staat er iets in dmesg wat raar lijkt, of verschijnt er een log in de folder?

Ik heb even voor te kijken de applicatie zelf gedownload, niet de drivers en het lijkt "gewoon" goed te draaien. Al draai ik wel Gentoo, niet Debian, laat staan op een Pi.

Ik zie een output.txt file met wat dingen in, maar dat kan ook zijn omdat ik op "update here" klikte.
Hmm, blijkbaar niet, er staan ook eerdere exceptions in. Dit bestand is dus welke we nodig hebben denk ik.

De props file is inderdaad maar een simpel configuratie bestand welke de coords e.d. lijkt op te slagen initieel.
De files zijn echter zo oud dat het ik geloof niet echt gaat werken met Java11 :+ .
Jammer genoeg is de applicatie zelf door Proguard gehaald wat het debuggen wat lastiger maakt...

EDIT: Lol; goed geschreven die applicatie, die "update checker" kan al niet overweg met custom HTTP return codes buiten 200 en daarom komt die "update here" melding tevoorschijn... Dat bruist me niet al te veel vertrouwen in ivm de andere code :+

[ Voor 19% gewijzigd door GuntherDW op 16-09-2019 10:31 ]


Acties:
  • 0 Henk 'm!

  • nielsgeode
  • Registratie: Juli 2003
  • Laatst online: 08-09 21:29
@GuntherDW De software is inderdaad oud. Ik gebruik het al jaren onder windows. Had de auteur al benaderd, maar hij lijkt geen enkele reactie te geven.

Bedoel je met dmesg de textoutput die het systeem teruggeeft in de terminal? Als ik de software wil starten zonder -verbose dan zie je geen enkele output. Direct onder de zojuist gegeven commandoregel verschijnt weer de prompt voor een nieuw commando.

Ik heb VisualVM gedownload en kan de software starten vanaf een terminal. Ik zie nog niet wat nou handig om te doen en wat me gaat helpen hier. Heb de documentatie gelezen, met google gezocht en wat youtubefilmpjes bekeken.

Als ik vanuit een terminal StackShotCtrl.jar run dan staat er in VisualVM in de Applications pane onder Local een 'StackShotCtrl.jar (pid [number])' welke binnen een seconde ook weer verdwijnt. [number] is elke keer anders.

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 09-09 16:17

Janoz

Moderator Devschuur®

!litemod

Sowieso zou je volgens de handlijding de applciatie uebrhaupt als root moeten draaien (wat bij mij niet veel vertrouwen wekt) en je zou hem met een bash script moeten starten ipv rechtstreeks de jar (omdat er eerst nog even een paar kernelmodules verwijderd moeten worden ???? )

Al met al sluit ik me aan bij @GuntherDW. Heel eerlijk lijkt me dit behoorlijke hobbyprut. De bouwer had denk ik zijn tijd beter kunnen steken in een fatsoenlijke applicatie ipv in een obfuscator.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • Standeman
  • Registratie: November 2000
  • Laatst online: 16:26

Standeman

Prutser 1e klasse

GuntherDW schreef op maandag 16 september 2019 @ 10:00:
...

@Hero of Time OpenJDK 8 en Oracle's "eigen versie" verschillen tegenwoordig niet bijster veel meer, tenzij je specifieke classes nodig hebt, waaronder sun.* bijvoorbeeld.
Alsook "zomaar" Java11 gaan installeren is ook niet zo slim als de app Java8 target. Sommige libraries kunnen hier niet mee om.
....
En dat klopt ook. Als ik de pastebin bekijk lijkt het volgende een probleem
[1.546s][info][class,load] com.sun.jna.Callback$UncaughtExceptionHandler source: file:/home/pi/Downloads/Simple%20Stackshot%20Controller-0.9.9.3/StackShotCtrl_lib/jna-3.5.2.jar
JNA lijkt weer een soort "JNI" te zijn (ik kende het nog niet):
JNA provides Java programs easy access to native shared libraries (DLLs on Windows) without writing anything but Java code no JNI or native code is required. This functionality is comparable to Windows' Platform/Invoke and Python's ctypes. Access is dynamic at runtime without code generation.
Vermoedelijk gaat OpenJDK niet werken. Ik vraag me zelfs af op het überhaupt op Linux gaat werken.

The ships hung in the sky in much the same way that bricks don’t.


Acties:
  • 0 Henk 'm!

  • nielsgeode
  • Registratie: Juli 2003
  • Laatst online: 08-09 21:29
@Janoz Het is hobbyprut, als je het zo wilt noemen. Het ding werkt echter wel geweldig vind ik. Uitdaging: zoek een goed alternatief. Zerene Stacker heeft de mogelijkheid om de NEMA17 stappemotor (die aan de rail zit) te bedienen, maar deze vond ik destijds minder fijn werken. Ik zal er ondertussen nog eens naar kijken, maar het zou kunnen dat het functionaliteit mist die wel in Simple Stackshot Controller zit.

Mijn codeskills zijn (nog) non-existent, dus voordat je zover bent dat je zelf zoiets als dit kan bouwen ben je wel even verder denk ik.

Edit: net even nog een keer gekeken naar Zerene Stacker en een van de dingen die ik niet fijn vind is dat er geen sneltoetsen zijn, alles moet met de muis en klikken. Verder ben ik Simple Stackshot Controller gewend, wat handig maakt voor de routine.

@Standeman Simple Stackshot Controller lijkt onder Linux op een 'normale' pc gewoon te draaien.

[ Voor 22% gewijzigd door nielsgeode op 16-09-2019 13:46 ]


Acties:
  • 0 Henk 'm!

  • GuntherDW
  • Registratie: November 2004
  • Laatst online: 29-12-2022
Zoals ik in m'n reply eerder al vermeldde: De applicatie vult alle output in een logfile genaamd "output.txt".

Zie je dit bestand in dezelfde folder als de JAR en if so, kan je die even tonen?

@Standeman Correct, echter staat zo goed als elke "Exception" wel in die log. Het logt gewoon elke ClassLoad volgens mij. Je kan dus niet zomaar uitgaan van "daar ligt je probleem".
OpenJDK kan gewoon van JNA gebruik maken. De feitelijke exception zal volgens mij niet aan OpenJDK liggen.
(Aangezien het hier, op de driver na aangezien ik zo geen bordjes/motors heb, gewoon boot & werkt. De tool klaagt over de specifieke tool driver, niet dat JNA zelf niet werkt)

Acties:
  • 0 Henk 'm!

  • nielsgeode
  • Registratie: Juli 2003
  • Laatst online: 08-09 21:29
@GuntherDW Excuus, overheen gelezen. In output.txt staat:
Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: JNA native support (com/sun/jna/linux-arm/libjnidispatch.so) not found in resource path (StackShotCtrl.jar)
at com.sun.jna.Native.loadNativeLibraryFromJar(Native.java:763)
at com.sun.jna.Native.loadNativeLibrary(Native.java:737)
at com.sun.jna.Native.<clinit>(Native.java:129)
at com.sun.jna.Platform.<clinit>(Platform.java:102)
at pf.run(pf.java)
at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:740)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

Acties:
  • 0 Henk 'm!

  • GuntherDW
  • Registratie: November 2004
  • Laatst online: 29-12-2022
Hmm, de native code wordt niet geladen/gevonden in de JAR, wat wel klopt.
De enige ARM native library in de JNA JAR is voor windows CE...

Je zal dus de JNA lib in de StackShotCtrl_lib/ folder moeten updaten. De filename zal echter ook hetzelfde moeten blijven tenzij je de manifest van de stackshotcontroller JAR gaat updaten.

Echter zijn er wel verschillende major versies geweest waardoor je ofwel verschillende versies gaat moeten uitproberen om te kijken of de compat niet te erg verschilt (en dat de ARM .so in de JAR zit), of de bepaalde JNA versie zelf compilen met die support ervoor erin.

Het eerste zal denk ik makkelijker zijn.

Ziet ernaar uit dat 4.0.0 al de betreffende library in de jar heeft zitten. Je zou van die versie omhoog dus kunnen proberen.
http://repo1.maven.org/ma...a/jna/4.0.0/jna-4.0.0.jar en hoger dus

http://repo1.maven.org/ma...a/jna/5.4.0/jna-5.4.0.jar is momenteel de nieuwste versie.

Acties:
  • 0 Henk 'm!

  • nielsgeode
  • Registratie: Juli 2003
  • Laatst online: 08-09 21:29
@GuntherDW

Het werkt! De software start nu, maar zegt nog wel 'rail not found'. Ik heb m eerst (in USB) ingeplugd en daarna een reboot gedaan met uiteraard de stackshot controller al aan.

Ik heb deze procedure gevolgd om de FTDI drivers te installeren. Als ik een
python -m pylibftdi.examples.list_devices
geef, dan krijg ik
Cognisys:StackShot:FTVY84V3
als output.

[ Voor 160% gewijzigd door nielsgeode op 16-09-2019 18:07 ]


Acties:
  • 0 Henk 'm!

  • GuntherDW
  • Registratie: November 2004
  • Laatst online: 29-12-2022
Mooi dat de applicatie nu draait, nu zouden er meer meldingen moeten staan in je output.txt welke kunnen helpen.

Kan zijn dat het een permission probleem is zoals de pagina vermeld, maar aangezien ik de hardware niet heb kan ik daar niet echt veel verder mee helpen denk ik.
Hangt allemaal af van hoe de applicatie interfacet met de driver, en aangezien die codebase obfuscated is met ProGuard helpt het niet echt.

Acties:
  • 0 Henk 'm!

  • nielsgeode
  • Registratie: Juli 2003
  • Laatst online: 08-09 21:29
@GuntherDW

Output.txt geeft nu:
Linux Platform with Bitness arm
Current version : 0.9.9.3
New version : <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"><html><head><title>301 Moved Permanently</title></head><body><h1>Moved Permanently</h1><p>The document has moved <a href="https://macro-toolbox.com/download/SimpleStackshotCtrl/version.txt">here</a>.</p></body></html>
Native code library failed to load.
java.lang.UnsatisfiedLinkError: Unable to load library 'Unknow':
libUnknow.so: cannot open shared object file: No such file or directory
libUnknow.so: cannot open shared object file: No such file or directory
Native library (linux-arm/libUnknow.so) not found in resource path (StackShotCtrl.jar)
java.lang.Exception: No JNA library
at qh.<init>(qh.java)
at og.<init>(og.java)
at qd.run(qd.java)
at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:740)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:117)
at java.desktop/java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:190)
at java.desktop/java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:235)
at java.desktop/java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:233)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.desktop/java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:233)
at java.desktop/java.awt.Dialog.show(Dialog.java:1070)
at java.desktop/javax.swing.JOptionPane.showOptionDialog(JOptionPane.java:874)
at java.desktop/javax.swing.JOptionPane.showMessageDialog(JOptionPane.java:670)
at java.desktop/javax.swing.JOptionPane.showMessageDialog(JOptionPane.java:641)
at java.desktop/javax.swing.JOptionPane.showMessageDialog(JOptionPane.java:612)
at pf.run(pf.java)
at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:740)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
STACKSHOT selected
telnet command interface created on port 1307
java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1
Pagina: 1