Java API (Windows) - No Main entry point in jpgf.jar
UserBoi1 opened this issue · 6 comments
"C:\Program Files\Java\jdk1.8.0_261\bin\java.exe" -Dfile.encoding=windows-1252 -jar "C:\Users\Glen\Documents\Grammatical Framework (GF)\gf-3.11-windows\tmp-dist\java\jpgf.jar"
no main manifest attribute, in C:\Users\Glen\Documents\Grammatical Framework (GF)\gf-3.11-windows\tmp-dist\java\jpgf.jar
Process finished with exit code 1
I am using IntelliJ with the jfpg.jar added as a dependency to my project.
It's not just the MANIFEST.MF missing a mention of the entry point. I have searched through all the classes in jpgf.jar and none of them has a static void main(String[] args)
in them.
I don't really know much about JARs, but from what I can google, it seems it has to have such an entry point. Is jpgf.jar a kind of non-executable JAR? What is it that I'm missing here?
Any help appreciated.
Hi Krasimir,
Thank you for your response. As a result, I applied -Djava.library.path=C:\Users\Glen\Documents\GrammaticalFramework\java
and it got past the error!
Unfortunately, I am now getting a different error:
Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\Users\Glen\Documents\GrammaticalFramework\java\jpgf.dll: Can't find dependent libraries
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1934)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1850)
at java.lang.Runtime.loadLibrary0(Runtime.java:871)
at java.lang.System.loadLibrary(System.java:1122)
at org.grammaticalframework.pgf.PGF.<clinit>(PGF.java:88)
at Game.main(Game.java:20)
Process finished with exit code 1
I used dependency walker to find the DLLs it depends on:
C:\Users\Glen\Documents\GrammaticalFramework\c\libpgf-0.dll
C:\Users\Glen\Documents\GrammaticalFramework\c\libgu-0.dll
C:\Windows\System32\Kernel32.dll
C:\Windows\System32\msys-2.0.dll
I copied the two GF ones into the java folder and that seemed to make dependency walker happy.
Kernel32 is fine.
But it said msys2 was not fine.
I have it on my machine, but under C:\msys64
. I didn't know if it was a risky move to install it to System32 so I just copied the msys-2.0.dll
in. Made no difference. Dependency walker still unhappy. Code still produces the same mysterious error. So I copied msys-2.0.dll
into my C:\Users\Glen\Documents\GrammaticalFramework\java
, seeing as that worked for the GF ones. Made no difference.
Any advice?
Many thanks,
Glen
I downloaded the GF windows binaries from here:
https://github.com/GrammaticalFramework/gf-core/releases/tag/3.11
I am looking into how I would compile it myself instead. I've cloned the GitHub repo and I'm looking in gf-core/src/runtime/java
. The INSTALL file tells me I need to do C first. The INSTALL file for C says:
For Windows users
-----------------
- Install MinGW: http://www.mingw.org/. From the installer you need
to select at least the following packages:
- Mingw-developer-toolkit
- Mingw-base
- Msys-base
After the installation, don't forget to fix the fstab file. See here:
http://www.mingw.org/wiki/Getting_Started
- From the MSYS shell (c:/MinGW/msys/1.0/msys.bat) go to the directory
which contains the INSTALL file and do:
$ autoreconf -i
$ ./configure
$ make
$ make install
The compiled binaries should be now in c:/MinGW/msys/1.0/local/bin.
This is quite confusing for a few reasons. http://www.mingw.org/ is no longer a valid link. A quick Google reveals that it has been succeeded by a project called https://www.mingw-w64.org/.
And it talks about both Mingw and Msys. You mentioned avoiding compiling with Msys so should I disregard these instructions?