ciao a tutti, ho un problema con un programma del libro della Deitel (che fra l'altro consiglio a tutti), riguardante jnlp negli applet.
Praticamente da eclipse su osx faccio partire e mi manda fuori l'errore che è scritto più giù.
Ho provato a fare un .jar e ad aggiungere un .jnlp; a far partire da browser con un .html, ma nulla.
ecco qui il codice che dovrebbe essere funzionante poichè tratto direttamente dal libro 
Il programma dovrebbe far scegliere un'immagine e poi dare la possibilità di ridimensionarla.
codice:
import java.awt.BorderLayout;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.jnlp.FileContents;
import javax.jnlp.FileOpenService;
import javax.jnlp.ServiceManager;
import javax.swing.ImageIcon;
import javax.swing.JApplet;
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class ScaleImage extends JApplet{
private ImageIcon image;
private JPanel scaleJPanel;
private JLabel percentLabel;
private JTextField inputPercentField;
private JButton scaleButton;
private double scaleValue=1.0;
public void init(){
scaleJPanel=new JPanel();
percentLabel=new JLabel("scale percent: ");
inputPercentField=new JTextField("100.0");
scaleButton=new JButton("Scale");
scaleJPanel.add(percentLabel);
scaleJPanel.add(inputPercentField);
scaleJPanel.add(scaleButton);
add(scaleJPanel,BorderLayout.NORTH);
scaleButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
scaleValue=Double.parseDouble(inputPercentField.getText())/100.0;
repaint();
}
});
try{
FileOpenService fileOpenService=(FileOpenService) ServiceManager.lookup("javax.jnlp.FileOpenService");
FileContents contents=fileOpenService.openFileDialog(null, null);
byte[] imageData=new byte[(int) contents.getLength()];
contents.getInputStream().read(imageData);
image=new ImageIcon(imageData);
add(new DrawJPanel(), BorderLayout.CENTER);
}
catch(Exception e){
e.printStackTrace();
}
}
private class DrawJPanel extends JPanel{
public void PaintComponent(Graphics g){
super.paintComponent(g);
double spareWidth=getWidth()-scaleValue*image.getIconWidth();
double spareHeight=getHeight()-scaleValue*image.getIconHeight();
g.drawImage(image.getImage(),(int)(spareWidth)/2,(int)(spareHeight)/2,(int)(image.getIconWidth()*scaleValue),(int)(image.getIconHeight()*scaleValue), this);
}
}
}
Ecco qui l'errore che mi butta fuori eclipse quando dovrebbe aprire quello che fa scegliere l'immagine:
codice:
javax.jnlp.UnavailableServiceException: uninitialized at javax.jnlp.ServiceManager.lookup(Unknown Source)
at ScaleImage.init(ScaleImage.java:43)
at sun.applet.AppletPanel.run(AppletPanel.java:435)
at java.lang.Thread.run(Thread.java:745)
Poi avrei un'altra questione, jnlp.jar è diventato javaws.jar con java7, cosa cambia in sostanza?
Qualcuno mi può delucidare?
Grazie in anticipo
EDIT: OT: Ho dovuto fare molti tentativi per mettere il post, sia da chrome che da safari mi dava problemi e mi scriveva questo, poi ho risolto formattando il testo con text editor prima di incollarlo.. è normale?
codice:
Not AcceptableAn appropriate representation of the requested resource /forum/newthread.php could not be found on this server.
Apache/2.2.22 (Ubuntu) Server at forum.html.it Port 80