Java “constante chaîne de caractères trop longue” erreur de compilation. Se produit uniquement à l'aide de la Fourmi, pas lors de l'utilisation d'Eclipse
J'ai un peu de vraiment longues chaînes dans une classe pour l'initialisation de l'utilisateur de l'information. Quand je compile dans Eclipse, je n'ai pas d'erreurs ou d'avertissements, et la .jar fonctionne très bien.
Récemment, j'ai décidé de créer un fichier ant à utiliser. Chaque fois que je compile à la même classe avec ant, je reçois de la "constante chaîne de caractères trop longue" erreur de compilation. J'ai essayé un certain nombre de façons de configurer le compilateur java exécutable dans ant pour s'assurer que je suis en utilisant exactement la même version que dans Eclipse.
Je préfère comprendre comment obtenir les mêmes succès de la compilation j'obtiens dans Eclipse en Ant que d'essayer de retravailler le code dynamiquement concaténer des chaînes de caractères.
- votre chaîne est trop longue, que vous pouvez réaliser. comme un hack, vous pouvez le diviser en plusieurs chaînes dans votre code source et de les enchaîner. c'est ce que l'éclipse compilateur java est en train de faire sur votre nom.
Vous devez vous connecter pour publier un commentaire.
Quelqu'un essaie de vous envoyer un message 🙂 Dans le temps que vous avez passer de jongler avec des versions de compilateur vous pourriez avoir chargé les données à partir d'un fichier texte - ce qui est probablement là où il appartient.
Découvrez:
J'ai trouvé que je pouvais utiliser apache commons lang StringUtils.join( Object[] ) méthode pour les résoudre.
La longueur d'une chaîne de caractères dans un fichier de classe est limité à 2^16 octets en UTF-8, cela ne devrait pas être dépendant du compilateur utilisé. Peut-être que vous utilisez un jeu de caractères différent dans votre fichier ant que dans eclipse, de sorte que certains caractères ont besoin de plus d'octets qu'avant. Veuillez vérifier les
encoding
attribut de votrejavac
tâche.Rien de ci-dessus a fonctionné pour moi. J'ai créé un fichier texte dont le nom test.txt et lire ce fichier texte à l'aide de code ci-dessous
Un autre truc, si je suis déterminé à mettre une longue chaîne dans la source, est d'éviter que le compilateur de détecter comme une expression constante.
Cela a fonctionné pendant un certain temps, mais si vous continuez à aller trop loin, le problème suivant est un débordement de pile dans le compilateur. Cette décrit le même problème et, si vous êtes toujours décidé, comment augmenter votre pile - le problème semble être l'ampleur de la méthode maintenant. De nouveau, ce n'était pas un problème dans Eclipse.
Avez-vous essayé cette? Jamais essayé moi-même, mais ici, c'est la section appropriée:
À l'aide de la fourmi javac adaptateur
L'Éclipse compilateur peut être utilisé à l'intérieur d'un script Ant à l'aide de la javac adaptateur. Pour utiliser le compilateur Eclipse, il vous suffit de définir le construire.compilateur de la propriété dans votre script. Voici un petit exemple.
Je serait vraiment envisager de faire vos classes normes compatibles. Je crois que la limite officielle est de 65535, et le fait qu'Eclipse est plus indulgent est quelque chose qui pourrait changer sur vous à le plus inopportun de fois, et avoir constamment à obtenir le projet compilé avec Eclipse peut vraiment commencer à vous limite dans beaucoup de façons.
Ajouter votre chaîne values/strings.xml que appel getResources.getString(R. string.yourstring)
Vous pouvez essayer ce,