Erreur! Le premier argument de la fonction Java non statique 'replace' n'est pas une référence d'objet valide
J'essaie d'obtenir ANT pour créer un rapport HTML de test JUNIT dans Eclipse, mais après, j'ai créé l'ANT j'obtiens les erreurs suivantes lorsque je l'exécute:
[junitreport] Processing C:\Documents and Settings\Administrator\workspace\Home\junit\TESTS-TestSuites.xml to C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\null785926900
[junitreport] Loading stylesheet jar:file:/C:/ANT/apache-ant-1.8.3/lib/ant-junit.jar!/org/apache/tools/ant/taskdefs/optional/junit/xsl/junit-frames.xsl
[junitreport] : Error! The first argument to the non-static Java function 'replace' is not a valid object reference.
[junitreport] : Error! Cannot convert data-type 'void' to 'reference'.
[junitreport] : Fatal Error! Could not compile stylesheet
[junitreport] Failed to process C:\Documents and Settings\Administrator\workspace\Home\junit\TESTS-TestSuites.xml
Que dois-je faire pour résoudre ce problème?
Voici les articles de mon Build.xml je suis en train de lancer:
<target name="Home">
<mkdir dir="${junit.output.dir}"/>
<junit fork="yes" printsummary="withOutAndErr">
<formatter type="xml"/>
<test name="Home" todir="${junit.output.dir}"/>
<classpath refid="Home.classpath"/>
</junit>
</target>
<target name="junitreport">
<junitreport todir="${junit.output.dir}">
<fileset dir="${junit.output.dir}">
<include name="TEST-*.xml"/>
</fileset>
<report format="frames" todir="${junit.output.dir}"/>
</junitreport>
</target>
source d'informationauteur user1397000 | 2012-05-15
Vous devez vous connecter pour publier un commentaire.
Quand j'ai eu cette erreur j'ai dû faire un clic droit sur mon build.xml fichier dans Eclipse, choisissez l'option "Exécuter en tant qu'Ant..." (3e) dans le menu) puis cliquez sur le JRE onglet et sélectionnez "Exécuter en même JRE que l'espace de travail" et a ensuite procédé à l'exécution du script. Pour une raison quelconque, cela a résolu le problème. Honnêtement, je ne sais pas pourquoi.
L'Éclipse Bug est clairement documenté Bug 384757. L'analyse suggère que l'Oracle a introduit le bug. J'ai besoin de la version Java 7 mais JunitReport besoins Java version 5, et les premières versions de Java version 6. Le moyen le plus évident consiste à ajouter le "bootclasspath" l'argument de la Fourmi junitreport tâche tandis que le Java problème est résolu par Oracle dans une version future. Malheureusement tâche Ant junitreport ne prend pas en charge la bootclasspath option. Est-ce quelque chose que les gens qui la supportent Fourmi pourrait le faire?
J'ai rencontré cette situation lors de l'exécution de mon programme java sur Ubuntu 12.04 avec java *1.7.0_51* sur Eclipse SDK Juno. Je prends Bhagyaraj de la suggestion qui est à l'aide d'apache-ant-1.9.2 à la place.
(p.s. La valeur par défaut ant version d'Eclipse Juno est *org.apache.ant_1.8.3*, et j'utilise apache-ant-1.9.3)
Vous pouvez à la suite de ma étapes pour l'installation.
Après le changement de ceux-ci pendant que vous cliquez sur à droite build.xml fichier et choisir Exécuter --> 1 Ant, le message d'erreur ne vais pas vous montrer à cause de votre fourmi est maintenant 1.9.3.
J'ai aussi télécharger apache-ant-1.8.4 pour exécuter mon fichier build, mais l'erreur ne peut pas être résolu.
J'ai utilisé le jdk1.6.45 et la dernière version de apache-ant-1.9.2-bin\
Le problème est résolu.
Selon la note sur MikeBach
C'est le bug#,
veuillez lire:
https://bugs.eclipse.org/bugs/show_bug.cgi?id=384757
Fixe dans Ant.
Ce qui concerne,
Bhagyaraj
Si vous utilisez Eclipse/JUnit rapport avec JDK 1.7, veuillez utiliser le JDK 1.6. Il y a un bug dans le JDK 1.7 avec Eclipse/JUnit rapport similaire à ce que vous décrivez. Cela peut être un rapport similaire: https://netbeans.org/bugzilla/show_bug.cgi?id=201022
J'ai essayé avec différentes JRE/JDK paramètres (tous les 1.6 et 1.7) avec divers problèmes (ou ce manque d'accès au fichier XSL dans le bocal) pour chaque.
Ce n'est pas une solution parfaite, évidemment, mais je ne semble pas fonctionner dans ces questions si l'JUnit rapport est "raw" dans le buildfile -- pas enveloppé dans une cible.
Mauvaise solution, bien évidemment, dans que les objectifs sont un aspect important de la Fourmi, mais parfois, pour les rapports de construire les objectifs et les dépendances ne sont pas essentielles à la mission. Ce n'est pas tellement un problème pour moi mais parce que je suis à court de ces rapports dans kindof un mode plutôt que comme faisant partie d'une génération.
La Bug a été introduit dans Java 7u5 selon ce commentaire.
Un autre commentaire explique comment le contourner, la modification de la bootclasspath. (AVERTISSEMENT: je n'ai pas essayer et de tester cela.)
Cette solution, cependant, a travaillé bien pour moi:
Selon Ant Les changementsce qui a été fixe depuis 1.9.1