Asociaciones de archivos no funcionando en JPackage.
Estoy enfrentando un problema con las asociaciones de archivos en Java (usando el comando de terminal JPackage para construir un archivo ejecutable). El problema es básicamente el siguiente: cuando intento abrir un archivo con mi aplicación, la ruta del archivo no se pasa a mi método principal como argumento.
Permítanme compartir un ejemplo simplificado del código a continuación. Estoy trabajando en IntelliJ Idea en MacOs 12 (Monterey).
Esta es la (única) clase, que contiene el método principal, desde la cual construyo un archivo .jar ejecutable.
import javax.swing.*;
import java.awt.*;
public class Main {
public static void main(String[] args) {
if (args.length == 0) {
JFrame frame = new JFrame("Test");
JLabel label = new JLabel("No arguments");
frame.setLayout(new BorderLayout());
frame.add(label, BorderLayout.CENTER);
frame.setPreferredSize(new Dimension(1000,500));
frame.pack();
frame.setVisible(true);
} else if (args.length == 1) {
JFrame frame = new JFrame("Test");
JLabel label = new JLabel(args[0]);
frame.setLayout(new BorderLayout());
frame.add(label, BorderLayout.CENTER);
frame.setPreferredSize(new Dimension(1000,500));
frame.pack();
frame.setVisible(true);
}
}
}
Este es el archivo “.properties” que he escrito para establecer la asociación de archivos con el tipo de archivo “.txt”.
mime-type=text/plain
extension=txt
description=Text Source
Por último, aquí está el comando de terminal que utilicé para construir el archivo ejecutable para MacOs.
jpackage --type "app-image" --name JavaGuiApp --input /Users/username/Desktop/JavaGuiApp --main-jar JavaGuiApp.jar --file-associations /Users/username/Desktop/JavaGuiApp/FAtxt.properties
Me he basado en la información encontrada aquí en JPackage: https://docs.oracle.com/en/java/javase/14/jpackage/packaging-overview.html.
¡Gracias a todos de antemano por su ayuda!
davy.ai
Solución para el problema de las asociaciones de archivos en Java utilizando JPackage
El problema encontrado con las asociaciones de archivos en Java utilizando el comando de terminal JPackage se puede resolver modificando el método principal.
Actualmente, el método principal en el código proporcionado no recibe ninguna ruta de archivo como argumento, por lo que siempre muestra “No hay argumentos” al ejecutarse. Para recibir la ruta de archivo como argumento, el método principal debe modificarse de la siguiente manera:
Con esta modificación, el método principal ahora verifica si se pasa algún argumento cuando se inicia el archivo ejecutable. Si hay un argumento, mostrará la ruta de archivo en un JFrame, de lo contrario mostrará “No hay argumentos”.
Después de modificar el método principal, vuelva a compilar el archivo ejecutable utilizando el mismo comando de terminal como antes. Una vez que se compila el archivo ejecutable, intente abrir un archivo “.txt” con él. La ruta del archivo ahora debería pasarse como argumento y mostrarse en la GUI.
Espero que esta solución resuelva su problema. Avíseme si tiene alguna pregunta adicional.