I'm having a lot of difficulty getting an applet I made to run in a web browser. Java security keeps blocking it. I have the jar sitting on my desktop and I made a simple html file that embeds the jar using . I'm trying to embed this in html for my website. I don't have any root access to the site at all so I want to avoid using Web Start and Apache Tom Cat stuff because it seems those tutorials assume you're uploading the app itself to the directory of the site itself. I can only embed html here, so I have a jar located in my googledrive.com/host that I'm trying to link.
Here's the code for the tag.
<applet
codebase="https://bb2f18b1cb19b925c50b747c1c65afcc4ad11720.googledrive.com/host/0B34NA0csYJZufm5ZeFFEcUMyQnR5bmw1eVl2M3BOcXItNGxxZTZvaFExNVhXQnY4dzY3QTg"
archive="AsteroidGameApp.jar"
code="asteroidgame.AsteroidGame.class"
width=500
height=500>
</applet>
I don't even know if it would run correctly or not because I can't get past the security. I've read stuff about getting the code signed but I can't find a clear tutorial how to do that.
As reported on the Java related site Starting with Java 7 Update 51, trying to run unsigned Java applications generates error messages and prevents executing the applet.
Follow the instructions about the Oracle proper solution (I my experience I had to get a valid certificate from a trusted root like Verisign and then used this certificate to sign my applet jar) but if you can't do this way, try the suggested workaround in the correspondent section.
Obviously, as stated by the Java site:
It is highly recommended not to run these types of applications. However if you still want to run these apps, run only if you understand the risks and implications.
Related
I'm using the following link to access JNLP API's:
Using Filechooser
The project: JWSFileChooserDemo
Basically I want an Open and Save dialog box to get "text" file from user, saving it on server, reading it, processing etc and then showing the same .java file on Website.
For the above 2 lines I've tried:
1. "Integration of Applet with Web Application", this integration works correctly but integration of "Applet .jar file in Web Application" restricts the reading of file.
2. Then I used Servlets to do the same job, but file reading doesn't works therefor me.
3. Now, I'm using JNLP, Java Web Start for the same.
But according to what I've read on the website, the applet should be signed for these file operations. Under NetbeansIDE there is an option to enable WEB START and self-signing an applet. But this doesn't work for me.
I created the same program as mentioned in the link(using javax.jnlp), but after clicking on Open, it is looping towards else statement which shows "User cancelled save request.".
I think, the above error is due applet is not signed properly as when I run the JNLP file given on the link..it asks for following confirmation i.e.
So, should I sign an applet using Project properties->WebStart->Enable WebStart->signing->self-signing by generated key or by signing it using keytools which generated certificate i.e .crt file. Is there any other way to do this?
Is there any other way to do this?
It is possible to use the JNLP API services in an unsigned application. Having said that, Oracle has decided that in a future JRE, unsigned code will not be loaded at all (using the default security preferences).
Note that those two linked pages refer to two different ways to load files.
'Using Filechooser' uses the JFileChooser provided with Swing. An applet/JWS app. that uses a file chooser needs to declare all-permissions in the launch file.
The JWSFileChooserDemo demo. OTOH, uses the JNLP API file services, and would produce a prompt at run-time similar to the one shown. At the moment these do not need to be signed.
As far as 'self signed' goes, Oracle has also put warnings against using that. The publisher of a self-signed app. at the moment, will show as UNKNOWN with extra warnings about accepting code from unknown sources. In the future, the JRE will also automatically reject self-signed code.
For the longer term, the only real option is to supply a digitally signed app. Signed using a verified certificate from a Certification Authority.
I've written a Java applet game that I want to deploy on my Apache server. Code + resources are in a self signed .jar with accompanying HTML doc both in the root dir. When I run it on my local machine everything works fine. When I try to run on the server I get a class not found exception. index.html contains
<applet code=SpaceRaiderz.class
archive=spaceraiderz.jar
width=1024 height=768>
</applet>
The class not found is the class named above. Opened up the .jar and its contents are complete. File permissions set to 755. If I click the index.html on my local machine it loads up and runs perfectly. Ftp the same docs to the server and it doesn't work. Anyone had this problem? I found a similar question to this on here but none of the suggested solutions have worked in this case.
The applet (seen here) works (e.g. showing an asteroids style game featuring a pale green ship that appears suspiciously familiar + sound track) for me in Java 1.7.0_21 on Windows using FF. Refreshing the class cache in the console & then refresh the page might fix the problem for you.
If that fails, there are still more options for testing the applet:
Usually installing another browser (these things are often due to a problem in the particular browser/JRE combo.).
There is also the Appleteer applet testing environment. I can highly recommend it, Since I wrote it.
Go to an internet cafe or the local library to check an applet, if all else fails.
I am currently writing a Java applet (actually JApplet) that uses the Java AWS SDK to download a few files from my S3 bucket. The Applet works very well when I run it on the Applet Viewer in Eclipse, but I run into problems when I try running it on a browser.
I have indeed read a few SO questions on similar issues, but after following the answers provided, I still haven't found a solution to this problem.
At first I tried exporting a runnable jar with all dependencies included, at least for testing. But I got this error message in every browser that I tested in (Firefox, Chrome and IE):
access denied ("java.util.propertyPermission" "com.amazonaws.sdk.disableCertChecking" "read")
After some searching I found that this could be because my jar was not signed. So I self-signed it and tried again only to get the same error. I even decided to work with separate jars instead of packing them into a single jar and sign them all, to no avail.
The AwsCredentials.properties file is current and resides in the same directory as the jars, though I don't think that is what is causing the problem.
The code in HTML that I am using to embed the applet:
<applet code="path.to.class.Packer"
archive="signed-packer.jar"
width="400px" height="200px">
</applet>
Let me know if you'd like more information.
I'd appreciate any help on this issue. Thank you.
Yup. An applet running in a browser sandbox is not allowed to read arbitrary Java system properties. It is a security restriction. Signing the applet JAR file should be sufficient, provided that Java accepts the signing certificate. (Have you added your self-signed certificate to your Java installation's keystore?)
Related question: Self-signed applet doesn't get a full permission
I coded a Java program to read and modify a file on the computer. The program is based only on 1 class.
At the moment who want to use it has to run it from terminal, I'm looking on how to insert it on a webpage and make it run on the visitor's computer. It would be fine to have a file chooser (the user will want this modification).
I searched on internet and found Java applets, but I read that they aren't downloaded and executed locally so the program won't work.
How to provide a Java class file from a webpage, for use on the computer of the end-user?
If you really want to download a Java program and run it locally, you should check out Java Web Start.
Briefly, it allows the user to download and run a Java program locally on their machine. It does clever stuff like identify if an updated version is available for download, and will run the cached version if that's the current version.
Here's a tutorial.
..it would be fine to have a file chooser ..
In that case, there are basically the two options as I've outlined in comments throughout this question & the answers. I'll collect them together here:
Digitally sign the applet, get the user to accept the digitally signed code when prompted (before the applet is loaded), then offer a JFileChooser to browse to the file.
If the user has a plugin 2 JRE (chase the links in the JWS info. page for more details), it is possible to deliver the applet to the user unprompted, then leverage the JNLP API to produce a file chooser. The user will be prompted before the dialog appears, this time with a more specific warning.
JWS
For an example, see my applet based GIF animation tool which uses the JNLP API when the user goes to load image frames or save the animated GIF.
That applet is not open source (mostly because of my laziness in not wanting to revisit & tidy the code) but there is a much better example of using the JNLP file services that comes complete with source.
Digital signatures
I don't have any great links about the process of digitally signing code, but note that the 'example of using the JNLP file services' listed above provides one set of signed Jars for 2 different security environments. It also (hopefully obviously) demonstrates how to digitally sign code using Ant (it all happens by invoking the default task in the build.xml).
Applets can modify files locally, if they are signed and the user allows them to.
Read up on signed applets.
I read that they aren't downloaded and excuted locally
Whereever you read that, it is 100% incorrect. Applets are downloaded into the browser and executed at the client host.
I know similar questions have been asked but i have searched for hours and as of yet have not come up with a workable solution.
I have a Java applet which will be a "paint" like application. So, I need the user to be able to upload images from their file system. I first tried using a JFileChooser which works great in the eclipse environment. However, when put online i get a "java.security.AccessControlException: access denied" exception.
I was thinking that perhaps within the applet i could call a script (located on my server) which would prompt the user to select a file - but i have no idea how to do this. I am using zymic web hosting, so the only supported scripting language is PHP.
I also tried signing the applet. Since i don't want to spend money on certificates, i self signed the applet. When i tried running it, I got an error stating "The Publisher Cannot Be Verified By A Trusted Source".
Any help would be greatly appreciated. - Thanks:)
A trusted applet can most certainly load files from the local file-system. The "Publisher Cannot Be Verified By A Trusted Source" message that is produced by self-signed applets is onerous & scary (for good reason), but if the user OKs it, it works just fine.
Here is a small demo. of exactly that.
Since the 'Next Generation' Plug-In, even sand-boxed applets can access the local file system. See the last 2 links on the Applet tag info page for further details.
Here is an applet that uses the Next Generation file abilities.
Unsigned applets can not access the file system for security reasons.
There is a tutorial about uploading files using PHP here
Maybe you can work that into your page in order to allow the file to be uploaded and then load it from your web server with the applet.
Do keep in mind the warning at the end of that example under the section "php - file upload: safe practices"