I am trying to run the MARS simulator in order to do some Assembly homework in Ubutnu 11.04. MARS(jar file) requires Java to be installed and so I did install Java.
After that I typed
java -jar .jar
and as a result I got:
Failed to load Main-Class manifest attribute from .jar
What must I do in order to run this file properly?
There are different Java implementations and you are not using the "official" one. (As is clear from the libgcj.so that appears on your error) and that one tends to be the most reliable.
Ubuntu 11.04 might still have the java-6-sun package (it was deprecated on newer Ubuntu releases because of license conflicts), so you should try with that one.
If that java is not in Ubuntu, then you can try downloading and installing Java from the Oracle site.
Related
I have a jar file that runs fine from the Windows 10 command line, but is not working on my desktop Ubuntu 18.04 command line. The file was exported from Eclipse as a jar, and copied to Ubuntu. The project has about 30 classes over a half dozen packages. I've done some renaming in order to simplify things for this question.
This is the command used to run the jar:
java -jar myproject.jar
On Ubuntu, I get the error "Could not find or load main class com.a.b.LaunchThis"
Following are some of the things I've tried, based on suggestions from many similar posts. Sorry if this is a duplicate, but I couldn't find a workable answer.
I verified that the current Java is 1.8 using the commands:
$ update-alternatives --config java
and
$ java -version
openjdk version "1.8.0_252"
OpenJDK Runtime Environment (build 1.8.0_252-8u252-b09-1~18.04-b09)
OpenJDK 64-Bit Server VM (build 25.252-b09, mixed mode)
(I also verified that the program runs using java 8 on Windows.)
I ran the following check, which displays all the files, and confirmed that com/a/b/LaunchThis.class exists and is spelled exactly the same way.
java tj myproject.jar
The manifest seems correct.
Manifest-Version: 1.0
Main-Class: com.a.b.LaunchThis
I also tried unpacking the jar and running the program directly from the folder /myproject which contains both /com and META-INF. That should work, shouldn't it?
java com.a.b.LaunchThis
java com/a/b/LaunchThis
java com.a.b/LaunchThis
And from one level outside the myproject folder:
java myproject/com/a/b/LaunchThis
java myproject.com.a.b/LaunchThis
java myproject.com.a.b.LaunchThis
java myproject/com.a.b.LaunchThis
I am not totally clear on when the syntax requires . or /. The package command in "LaunchThis" which holds the main entry point is the following:
package com.a.b;
And in each of the above iterations I also tried including "-cp myproject.jar" as an option.
Always the exact same error message.
To be careful about not having a typo in the above, I first ran the ls command to make sure the file could be found (then edited this line to create the variants).
ls myproject.com.a.b.LaunchThis.class
Any suggestions as to what else to try?
For grins, running with Java11 gets this response:
Error: Could not find or load main class com.a.b.LaunchThis
Caused by: java.lang.NoClassDefFoundError: javafx/event/EventHandler
This makes some sense, because Java11 does not include JavaFX. But Java 8 does include EventHandler. It's been a part of Java since JavaFX 2.
UPDATE: I made two "Hello world" jars, one with and one without JavaFX on an Ubuntu installation of Eclipse running OpenJDK 8. To get the version with JavaFX to run, I downloaded the Oracle JDK 1.8, and linked to /lib/etc/jfxrt.jar as an "external jar" library. Both programs run in Eclipse but only the non-FX jar works. The FX jar gives exactly the same error message.
I think this pretty much establishes my problem to be one of not having JavaFX as part of OpenJDK 8.
My plan is to now try out two solutions: (1) copying the Oracle jfxrt.jar into the OpenJDK lib, (2) backloading OpenJFX 8.
Simply installing OpenJFX from repository loads OpenJFX 11, which is a little dated but will work with the OpenJDK 11.
The issue here is that the repository OpenJDK 8 on Ubuntu 18.04 does not include JavaFX. I'm guessing that the error message results from the fact that a JavaFX main() is located on a class that extends the JavaFX class Application.
How to fix this?
There are a number of things I tested.
First, one could use Oracle's JDK 1.8 instead. I ruled this out due to licensing issues.
Some sites suggested copying the jfxrt.jar from either the Oracle JDK 1.8 or from a working Java program that uses JavaFX and uses a self-contained JRE. I found that if I linked to the Oracle jfxrt.jar (located in the /jre/lib/ext folder) as an external jar, I could run a simple, "Hello world" javafx program in Eclipse. But I could not run the program after it was exported to a jar.
One answer on a related stackoverflow thread suggested copying over several additional files along with jfxrt.jar, which I tried. This did not work, so I'm not going to pass that on.
The solution that has been most successful came from a link provided in the comment by #dave_thomson_085, How do I get Java FX running with OpenJDK 8 on Ubuntu 18.04.2 LTS?.
This answer involves purging and reinstalling openjfx with an older version, and marking it to NOT be subjected to updates.
The code provided by Wolfgang Fahl (which he credits to Druidefix) follows:
apt purge openjfx
apt install openjfx=8u161-b12-1ubuntu2 libopenjfx-jni=8u161-b12-1ubuntu2 libopenjfx-java=8u161-b12-1ubuntu2
apt-mark hold openjfx libopenjfx-jni libopenjfx-java
Now, I can run and test jars containing Java8 using JavaFX that were built on my Windows Eclipse, on my Ubuntu desktop.
I do get a warning message which I haven't dealt with yet:
Gtk-Message: 13:25:40.829: Failed to load module "canberra-gtk-module"
But this is not preventing my programs from running.
I have formatted my Mac due to some storage issues. Before this, I used Eclipse in a proper way. Now i have installed the JDK
Then, i have installed Java
Until now everything seems to be correct but when I open the Eclipse installer...
What can I do to fix this? I need to work with this the soon as possible.
Thanks
Eclipse on macOS will not start with Java 14 installed, this is being tracked in Eclipse bug 561273.
Installing Java 8 as well does not help. You need to remove the Java 14 install. You could use the Java 13.0.2 release instead.
Eclipse have determined that the root cause of this issue is a change in Java 14 which is described in this bug report JDK-8238225. The fix for this should be in Java 14.0.1
Update: Eclipse runs fine with Oracle Java 14.0.1 so the issue has been fixed.
I also asked this question which was closed, that's why I answer what I have found out: Eclipse will not install on Mac OS Catalina 10.15.4, saying the above error message
Failed to create the Java Virtual Machine.
Deinstalling jdk and install an older one wouldn't help on its own because Eclipse is refusing to install in the first place (as mentioned above). What I have done:
i´ve installed an JDK with boost (you can try several, mine worked with Version 13)
I edited the installer:
Download the dmg file
convert the dmg-file with "hdiutil convert /dev/disk3s1 -format UDRW -o devimage"
mount the converted dmg-file with: "hdiutil attach -owners on devimage.dmg -shadow"
Edit the /Volumes/Eclipse/Eclipse.app/Contents/Info.plist: there is a section which is commented and there you can try the jdk version. You have to give the full path to the java executable, for example:
<string>-vm</string><string>/Library/Java/JavaVirtualMachines/jdk-13.0.2.jdk/Contents/Home/bin/java</string>
Then my eclipse started from the (already) mounted Eclipse image without complaining
I had the same issue myself a while back. In your Eclipsepedia it provided an example of what the eclipse.ini file looks like when your trying to specify a JVM. So just change the eclipse.ini file and then make sure that you have all of the correct documents in that path to match the example.
I have formatted my Mac due to some storage issues. Before this, I used Eclipse in a proper way. Now i have installed the JDK
Then, i have installed Java
Until now everything seems to be correct but when I open the Eclipse installer...
What can I do to fix this? I need to work with this the soon as possible.
Thanks
Eclipse on macOS will not start with Java 14 installed, this is being tracked in Eclipse bug 561273.
Installing Java 8 as well does not help. You need to remove the Java 14 install. You could use the Java 13.0.2 release instead.
Eclipse have determined that the root cause of this issue is a change in Java 14 which is described in this bug report JDK-8238225. The fix for this should be in Java 14.0.1
Update: Eclipse runs fine with Oracle Java 14.0.1 so the issue has been fixed.
I also asked this question which was closed, that's why I answer what I have found out: Eclipse will not install on Mac OS Catalina 10.15.4, saying the above error message
Failed to create the Java Virtual Machine.
Deinstalling jdk and install an older one wouldn't help on its own because Eclipse is refusing to install in the first place (as mentioned above). What I have done:
i´ve installed an JDK with boost (you can try several, mine worked with Version 13)
I edited the installer:
Download the dmg file
convert the dmg-file with "hdiutil convert /dev/disk3s1 -format UDRW -o devimage"
mount the converted dmg-file with: "hdiutil attach -owners on devimage.dmg -shadow"
Edit the /Volumes/Eclipse/Eclipse.app/Contents/Info.plist: there is a section which is commented and there you can try the jdk version. You have to give the full path to the java executable, for example:
<string>-vm</string><string>/Library/Java/JavaVirtualMachines/jdk-13.0.2.jdk/Contents/Home/bin/java</string>
Then my eclipse started from the (already) mounted Eclipse image without complaining
I had the same issue myself a while back. In your Eclipsepedia it provided an example of what the eclipse.ini file looks like when your trying to specify a JVM. So just change the eclipse.ini file and then make sure that you have all of the correct documents in that path to match the example.
I have developed a program using Java SE on Windows 7.
I build this app and it runs well on Windows.
I tried to run on Linux, so it runs but after some steps of:
Removing OpenJDK app.
Install Java JDK from terminal
Run jar file from terminal.
I need to make an installer on Windows - Linux - Mac, which installs JDK package and make the program run by double clicking.
Try using JarSplice. It is a nifty tool for converting Jar files into runnables for different systems. There are lots of tutorials on the internet on how to use it, although it is very well labelled and I found it simple enough to use.
I am using Ubuntu 14.04 and I am trying to self package a JavaFX app in IntelliJ 14. This has been wasting my time for past 2 days. It took me less to develop the app. Any help will be greatly appreciated.
What I want is a self-contained package that will run on any platform (mainly Windows). Now I am using Ubuntu and I want this:
1 - Using my current OS (Ubuntu 14.04) I want to create an exe file that will act as an installer or simple executable for windows whatever it is
produced.
I tried this, http://launch4j.sourceforge.net/docs.html and Excelsior JET, the first one does not create a self-contained app, and the second one did not run.
2 - I tried this http://docs.oracle.com/javafx/2/deployment/self-contained-packaging.htm
I tried using the javafxpackager which in Java8 it has been renamed into javapackager, and I ran this:
javapackager -deploy -native exe -srcfiles src/ -outdir out/artifacts -outfile GreekTest -appclass foo.Main
What it did was to just generate a bunch of java files in the ourdir. No exe.
From the link I posted above,
First of all I have no such XML file as in my JavaFX app directory that has a task <fx:deploy> is this generated by the user?
3 - IntelliJ Build Artifacts Tools just generate a jar file, no-self contained app.
4 - I also want to avoid Maven/Ant as I don't know how to use it.
Any help?
Check out Capsule.
Re Excelsior JET not working, you must be on a 64-bit Ubuntu system, and it needs some 32-bit libraries. Here is an excerpt from the installation instructions:
Important notice for 64-bit Linux users:
As of version 10.5, some key components of the 64‑bit version of
Excelsior JET for Linux remain 32‑bit. Most 64‑bit Linux systems do
not have the 32‑bit libraries installed by default. If you receive a
"No such file or directory" or "cannot execute binary file" message on
an attempt to run any Excelsior JET component, or one of its graphical
tools fails on startup with
Exception in thread "main" java.lang.NoClassDefFoundError: java.awt.Frame
you need to install those libraries.
On Ubuntu/Debian, the procedure used to be as simple as:
sudo apt-get install ia32-libs
but in the latest versions you have to list the libraries explicitly:
sudo apt-get install libc6:i386 libx11-6:i386 libxext6:i386 libxrender1:i386 libxi6:i386 libxtst6:i386
The list of libraries and installation procedure in other distros may
differ.
(Full 64‑bit port is our top priority, but doing it right takes time.
Please bear with us.)
In any case, it won't help you create "a self-contained package that will run on any platform (mainly Windows)." First, it creates a native executable that will run on either Windows, OS X, or Linux, but not on two or three of these. Second, it does not support cross-compilation as of version 10.5, so you need Excelsior JET for Windows to create a Windows EXE.