SAP Crystal Decisions integration does not work on Linux - java

We are building a web api that calls the SAP Crystal Decisions Library, to generate PDF reports. It works when running on our Windows 10 developer PCs, but when we deploy it inside a linux docker image, there is an exception related to libfreetype6 font library. If the library is uninstalled from our linux image, it complains the library is not installed. If we install the library, either manually with apt-get or by using a docker image that already has it installed we get the following exception:
java.lang.NullPointerException: null
at com.crystaldecisions.reports.exporters.format.page.pdf.fontembedding.opentype.tables.OS2Table.<init>(SourceFile:108) ~[CrystalReportsRuntime.jar!/:12.2.226.3772]```
SAP support claim there is no direct dependency on this library, so I am wondering where to start in troubleshooting this issue. I cannot locate it on my windows machine either. How can I confirm whether its included in the JDK? I have tried Java 10 and Java 11 JREs and JDKs, the error is the same.
Thanks for any ideas.

It is not supported in Linux, you can check the versions on this page:
And will not be supported ever, unlikely SAP will develop any new features except patches for the out of sale software.

In our tests, this issue does not occur using JDK 8 on Linux. It begins happening when using JDK 11 and higher. In JDK 11, Oracle removed the T2K font rasterizer, no longer ships any fonts and relies entirely on fonts installed on the operating system.
https://docs.oracle.com/en/java/javase/11/migrate/index.html

Related

Firebase Tools and Java 11

This question falls somewhere between Firebase Tools, MacOS and Java. Probably 75% Java, 20% Firebase Tools and 5% MacOS.
Starting with v10.5, firebase-tools started stating that 'Support for Java version <= 10 will be dropped soon in firebase-tools#11. Please upgrade to Java version 11 or above to continue using the emulators.'
I run macOS v11.6.5 on a Macbook Pro from mid-2014. When I go to Java's Downloads page, it recommends Java 'Version 8 Update 331'. Not Java 11.
Information on downloading Java 11 seems to be scarce. Oracle's page of certified configurations includes MacOS 11, but I can't find anywhere obvious where Java 11 can be readily downloaded.
A big part of the problem seems to be the terminology used. If I run java -version, I get:
java version "1.8.0_331"
Java(TM) SE Runtime Environment (build 1.8.0_331-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.331-b09, mixed mode)
Okay, I have build 1.8 of the Java Runtime Environment, aka the JRE if you are a Java enthusiast. That is apparently what is triggering the warning in Firebase Tools.
There is also a Java product out there called 'Java SE 11'. The product itself is ambiguous, but the checksums all say 'SDK'. (A Software Development Kit: a thing that enables developers to develop Java programs. The name doesn't imply a Runtime Environment: a thing that enables Java to run on an operating system.) There is an article out there which claims that, if you install Java SE 11 and run java -version, it will spit out java version "11.0.7". That will probably satisfy Firebase Tools.
But Oracle's release notes say: 'In Windows and macOS, installing the JDK in previous releases optionally installed a JRE. In JDK 11, this is no longer an option.' No longer an option... as in now you implicitly get JRE 11 with SDK 11? Or as in the SDK and JRE are now fully divorced, and the JRE must be ferreted out of its hiding like a wild beast?
UPDATE 6/5/22: Java's checksums page now says 'JDK', and I guess that is better than 'SDK' because it implies 'Java Development Kit', which this Wikipedia article claims to include both a JRE ('java') and SDK (most of the other files).
To install Java SE:
Go here.
Scroll down to find your product. I chose Java SE 11. (Oracle will probably list later versions as they are made available.)
Choose your operating system. I chose MacOS.
Choose your file set. I chose the DMG installer.
Download your chosen file set.
5. Do whatever is required by your platform to install Java SE using the downloaded file set from #5.
After installing Java SE 11, java -version now says "11.0.14" and Firebase Tools is now satisfied. My best guess is that JRE 11 was implicitly downloaded, and that developers need to start ignoring the main Download page used by everyone else. (Why didn't the main Download page recommend Java 11 from the start?) Hopefully someone will see this question and clarify whether in the future, the 'Java SE' product implicitly includes both the JRE and SDK, and that the numbering system will always encompass both. In other words, hopefully when someone says we need 'Java 11', it means that we need to download SE 11, containing JRE 11 and SDK 11.
This link has a JDK installer that solved my problem today. I needed to close and reopen all my VScode windows to get it to work.
https://www.oracle.com/java/technologies/downloads/
With latest versions this error appears: !! emulators: firebase-tools no longer supports Java version before 11. Please upgrade to Java version 11 or above to continue using the emulators.
You can download Java SE Development Kit 18 from this link. Just choose your operating system, download and install the file. When installation is complete you need to restart you terminal and voila it works now:
firebase emulators:start
But Oracle's release notes say: 'In Windows and macOS, installing the JDK in previous releases optionally installed a JRE. In JDK 11, this is no longer an option.' No longer an option... as in now you implicitly get JRE 11 with SDK 11? Or as in the SDK and JRE are now fully divorced, and the JRE must be ferreted out of its hiding like a wild beast?
With Java 8 and earlier, the end user of a Java application was responsible for providing a Java runtime environment for the application to run on. This is what the JRE was for. The user would have to install this runtime environment on their system in order to run Java applications. This is also why the https://www.java.com/en/download/ page recommends Java 8 (the JRE), which was the last version of Java where an end-user should concern themselves with installing a runtime environment.
Starting from Java 9, it is now the application distrubutor's responsibility to provide a Java runtime that can run the application. So, there are no more JREs.
The application developer should use jlink, which is a tool included in the SDK, to create a 'runtime image' (essentially a bespoke JRE to run a single application), that can be used to run the application, and bundle that runtime image with the application. The jpackage tool can also be used to create application images (including a runtime image), as well as installers.

Java ME SDK platform detection failure - Netbeans

I am trying to set up the Java ME 8 development environment. I am setting up the environment on a Windows 10 64-bit PC to develop a Java ME Embedded 8 application for use on a Raspberry Pi 3 model B. I have set up the Raspberry Pi successfully. However, when setting up the development environment on my Windows PC, Netbeans fails to detect the platform.
I have installed:
Java SE Development Kit 8u221
Java ME SDK 8.3
Netbeans 8.1
I have also tried
Java SE Development Kit 12.0.2, and 8u152
Java ME SDK 8 and 3.4
Netbeans 8.0.2 and 8.2
I have tried downloading and installing the sun java wireless toolkit. I have tried uninstalling and reinstalling in many different orders with different combinations of versions. I have tried changing permissions. I have tried installing the Netbeans plugins automatically and manually in multiple ways and orders. I have also tried setting it up as a Custom CLDC Platform Emulator multiple times but every time Netbeans crashes and breaks, and I have to uninstall it and reinstall again.
I have also checked the release notes of the Java ME SDK 8.3 and it says it supports Windows 10 64-bit.
Screenshot of platform set up steps taken:
Step one of platform set up:
Step Two of platform set up:
Step Three of platform set up:
I know that there are many similar questions on here, but I can assure you I have read all of them, tried their solutions and I have still not found a solution.
Any help any of you can offer me would be greatly appreciated.
SOLUTION: Downloaded an older version of the JDK - jdk 8u11. Then I directed my Java ME SDK 8.3/bin java file to that version instead.

JavaFX error while accessing SAP GUI on centOS

I have installed SAP GUI 7.40 for linux on client computer including JRE 1.8.0.04 but when I try to access the GUI it gives error:
The system requirement are not meet. Your Java Virtual machine does not support javafx required to run the SAP GUI for Java 7.40 rev 4.
My client OS is CentOS. I event changed JAVA_HOME path in /etc/profile, but its still giving the same error.
Any suggestions?
Try using Oracle Java rather than the OpenJDK based version which ships with CentOS. Unfortunately, the Java versions which ship with CentOS don't include JavaFX at the moment.
See also:
Centos 7 - where is jfx library for openjdk8? - and related: unix.stackexchange version of the same question.

Trouble with Browser type SWT.MOZILLA on windows 8 64 bit

after spending a day reading here and there I decided to ask help as I could not find a solution to my problem.
I have to create a java/swt application embedding a browser with full HTML5 support. That works out of the box on both linux and osx with SWT.NONE browser type (using webkit).
Unfortunatelly I have lot of troubles on windows.
First let me say that I'm using SWT 4.2.x on windows 8 64 bit.
To make SWT browser work with webkit I had to install 32bit JVM and manually point to it (as the -d32 switch on default 64bit JVM says that no 32 bit JVM is installed). ALso installed Safari.
And also I had to use 32bit SWT library. WHen finally I got it run I discovered that Safari for windows does not support drag and drop as experienced and stated here:
http://www.w3schools.com/html/html5_draganddrop.asp
So I decided to switch to mozilla. According to Eclipse/SWT documentation I have downloaded and installed XULRunner 1.8.0.1. I have unzipped it into C:\Program Files (x86)\Mozilla\XULRunner\1.8.0.1\xulrunner and run xulrunner --register-user (and also --register-global)
Finally in my code I added
System.setProperty("org.eclipse.swt.browser.DefaultType", "mozilla");
I have also set a global environment variable "MOZILLA_FIVE_HOME" pointing to the same XULRunner installation dir.
But then, when I run my java program (32bit JRE, 32bit SWT) I get
Exception in thread "main" org.eclipse.swt.SWTError: No more handles [MOZILLA_FIVE_HOME may not point at an embeddable GRE]
How can I fix that?
Thanks in advance!
EDIT:
I was running command prompt not as administrator and xulrunner was not registering. Doing as administrator, worked. However I'm still in trouble: XULRunner 1.9.x seems not to support HTML5. For example element.children is not supported.
I managed installing XULRunner 10.0.2 that seems to have the required support. However as soon as I click into my embedded browser, the application just crashes without printing any error on java output console...
I need to find a solution in order to use either ecent version of mozilla or recent version of webkit on windows
Ok, loading XURLRunner 10.0.2 works. The crashing app was due to a stack overflow error in my js code.
I too am trying to embed XULRunner into my eclipse plug-in, with no luck (currently). I came across your answer here. Just wanted to comment that it is not reasonable that you executed
xulrunner --register-user
nor
xulrunner --register-global
on the XULRunner 10.X since according to this post
https://stackoverflow.com/a/7567781/1743693
the support on installing the XULRunner system-wide was removed (which was a good step IMHO)
Trying to execute the aforementioned commands will result
"Error: couldn't parse application.ini"
As for my problem: I keep running into the runtime error:
Can't load library:
C:\Users\david\.swt\lib\win32\x86_64\swt-xulrunner-win32-4236.dll
C:\Users\david\.swt\lib\win32\x86_64\swt-xulrunner-win32.dll: Can't
load IA 32-bit .dll on a AMD 64-bit platform
And I can't figure out where this is coming from.
I'm running a VirtualBox with Windows 8 64bit
If you can elaborate more on what solved your issue with that - i would really appreciate that.
Thanks.

Port Java6 along with application

I have a Java desktop application for Mac, and we are porting Java along with the application. The issue, is that the Java we are using is strictly Java6 and not Java7 (Because Java7 does not have -d32 mode).
So I downloaded Java6 jdk from the apple developer site and have bundled it in the package. And it all works well. But when I try running on other Mac's, then it throws the following error:
/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin
$ ./java -version
dyld: Library not loaded: #rpath/libjli.jnilib
Referenced from: /Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin/./java
Reason: image not found
Trace/BPT trap: 5
As per this, it tries searching for the respective directory at /Library/Java/JavaVirtualMachines/ and not in the folder I ported along. How can I solve this issue?
How should I port Java6 along with the application.
Secondly, the Java6 I have used is jdk as I could not find the Jre of Java6. It will be appreciated if someone can provide or share Jre6.
Does Apple licensing even allow their JRE to be redistributed with a third-party app?
I think you are making things harder than they need to be. If a user does not have Java 6 installed (possible in OS X 10.7 and 10.8), the Mac OS will automatically prompt the user to download and install it the first time a Java application tries to run. It will then automatically continue launching your app once it's installed.
Just make sure you are bundling your app appropriately for Java 6 (e.g., using the old Mac Jar Bundler app or manually creating an equivalent Info.plist) and not Java 7 (e.g., using the new Oracle appbundler.jar).

Categories