2017-06-30 8 views
0

J'essaie de créer une application android à partir d'un projet javaFX en utilisant javafxports. Actuellement, je suis confronté à un problème lors de l'installation sur un appareil mobile et en le démarrant, il déclenche une exception ConfigurationException. enter image description here Voici le code à l'aide du fichier:Fichier de configuration de recherche de problème dans le projet androïde javafxports

public class AppConfig extends XMLConfiguration { 

/** 
* 
*/ 
private static final long serialVersionUID = 550015250032006413L; 
private static AppConfig instance; 
private static String configFile = "src/main/assets/config.xml"; 

// Singleton initialiser 
static { 
    instance = new AppConfig(configFile); 
} 

/** 
* Constructor 
* 
* @param fileName Configuration file name. 
*/ 
private AppConfig(String fileName) { 
    init(fileName); 
} 

/** 
* Initialize the class. 
* 
* @param fileName Configuration file name. 
*/ 
private void init(String fileName) { 
    setFileName(fileName); 
    try { 
     load(); 
    } catch (ConfigurationException configEx) { 
     configEx.printStackTrace(); 
    } 
} 

Ceci est le fichier gradle:

apply plugin: 'org.javafxports.jfxmobile' 



buildscript { 
    repositories { 
     jcenter() 
     maven { url 'https://oss.sonatype.org/content/repositories/ksoap2-android-releases' } 
    } 

    dependencies { 
     classpath 'org.javafxports:jfxmobile-plugin:1.3.5' 
    } 
} 



repositories { 
    jcenter() 
    maven { url 'https://oss.sonatype.org/content/repositories/ksoap2-android-releases/' } 
} 

mainClassName = "com.example.amladzhov.irisandroid.sample.Client.StartApplication" 

jfxmobile { 
    android { 
     packagingOptions { 
      exclude 'META-INF/DEPENDENCIES.txt' 
      exclude 'META-INF/LICENSE.txt' 
      exclude 'META-INF/NOTICE.txt' 
      exclude 'META-INF/NOTICE' 
      exclude 'META-INF/LICENSE' 
      exclude 'META-INF/DEPENDENCIES' 
      exclude 'META-INF/notice.txt' 
      exclude 'META-INF/license.txt' 
      exclude 'META-INF/dependencies.txt' 
      exclude 'META-INF/LGPL2.1' 
     } 

     dependencies { 

      compile 'commons-configuration:commons-configuration:1.6' 
      compile 'org.apache.commons:commons-exec:1.3' 
      compile 'commons-discovery:commons-discovery:0.5' 
      compile 'org.apache.axis:axis:1.4' 
      compile 'javax.xml.rpc:javax.xml.rpc-api:1.1.1' 
      //compile 'wsdl4j:wsdl4j:1.6.2' 
      compile 'org.jdom:jdom:2.0.2' 
      compile 'com.google.code.ksoap2-android:ksoap2-android:3.6.1' 
      compile group: 'commons-beanutils', name: 'commons-beanutils', version: '1.9.3' 
     } 
    } 
} 

Le fichier se trouve dans

src/main/assets/config.xml 
+0

D'abord, vous ne pouvez pas attendre que le fichier xml sera placé sous "src" sur runtime; Deuxièmement, le dossier 'assets' sous' main' n'est pas exporté vers android. Bien qu'il existe un dossier 'src/android/assets' que vous pouvez utiliser, vous devez placer le fichier xml sous' src/main/resources', puis charger le fichier en utilisant 'getClass(). GetResources ("/config.xml ") .toExternalForm() '. –

+0

Bonjour José, pouvez-vous s'il vous plaît dites-moi où je devrais mettre le code: getClass(). GetResources ("/ config.xml"). ToExternalForm() –

+0

Si vous avez juste besoin de l'URL du fichier comme une chaîne, vous pourriez faire 'String configFile = AppConfig.class.getResources ("/config.xml "). ToExternalForm()', où 'config.xml' est placé dans'/src/main/resources/config.xml'. –

Répondre

1

Vous ne pouvez pas attendre que le fichier xml sera placé sous un dossier src à l'exécution.

Notez toutefois que le dossier assets du package main n'est pas exporté vers Android, le fichier ne sera donc pas disponible.

S'il existe un dossier src/android/assets que vous pouvez utiliser pour placer les ressources requises pour Android, l'API Android doit le lire.

La meilleure option consiste à placer le fichier xml sous src/main/resources, puis de charger le fichier comme vous le faites régulièrement en Java en utilisant getResources().

donc placer le fichier sous src/main/resources/config.xml, et le remplacer:

private static String configFile = "src/main/assets/config.xml"; 

avec ceci:

private static String configFile = AppConfig.class.getResources("/config.xml").toExternalForm();