Niet-herkende optie: -o Kan de virtuele Java-machine niet maken

I've got an unusual build error when using Buildroot to create an image for my Phidget SBC. It's unusual because it occurs ONLY on my development laptop and NOT on my general use laptop even though I am using EXACTLY the same Builroot environment as published by Phidgets themselves.

Wanneer ik mijn Buildroot-afbeelding probeer te maken, krijg ik de volgende foutmelding wanneer wordt geprobeerd het GNU-klassenpad te compileren :

Making all in tools
make[2]: Entering directory `/home/xxxx/buildroot_phidgetsbc/buildroot-phidgetsbc_1.0.4.20111028/output/build/classpath-0.98/tools'
/bin/mkdir -p classes asm 
/bin/mkdir -p ../tools/generated/gnu/classpath/tools/gjdoc/expr
java -classpath  antlr.Tool -o ../tools/generated/gnu/classpath/tools/gjdoc/expr/ \
      ./gnu/classpath/tools/gjdoc/expr/java-expression.g

Unrecognized option: -o
Could not create the Java virtual machine.
make[2]: *** [tools.zip] Error 1

Het enige verschil dat ik kan maken is de verschillende Linux (Ubuntu) versies die ik op elke laptop gebruik. Ik kan ook geen optie vinden die gedocumenteerd is voor Java en ik begrijp niet waarom hij op de ene laptop werkt, maar niet op de andere.

Eventuele suggesties zouden nuttig zijn.

** EXTRA INFORMATIE **

Ik heb de Makefile bekeken en hier zijn wat ik denk de relevante lijnen:

ANTLR = java -classpath antlr.Tool ...

     

#Voor het genereren van de voorbeeldritus hangt af van de bronnen en negeer    #de klassebestanden. Altijd alle klassen met klasse opnieuw genereren en verwijderen    #per direct. En kopieer de sjabloonbestanden die we gebruiken naar de klassen    #dus krijgen ze ook inbegrepen.

     

$ (TOOLS_ZIP): $ (ALL_TOOLS_FILES)

     

@rm -rf klassen asm/bin/mkdir -p klassen asm/bin/mkdir -p   $ (Gjdoc_gendir)/gnu/classpath/tools/gjdoc/expr
  $ (ANTLR) -o $ (gjdoc_lootir)/gnu/classpath/tools/gjdoc/expr/\
   $ (srcdir) /gnu/classpath/tools/gjdoc/expr/java-expression.g

U kunt zien waar de 'probleem'-regel voorkomt in de regel die hierboven is aangehaald

** ADDITIONAL INFO 2 & PROBLEM RESOLVED **

Ik controleerde de Makefile op mijn 'gewone' machine en het is anders dan mijn 'ontwikkeling' laptop. Ik heb 'antlr' geïnstalleerd op mijn 'normale' computer terwijl het niet in mijn ontwikkeling was. Ik neem aan dat toen ./configure werd uitgevoerd, dit werd opgepikt en het antlr-commando werd aangepast, behalve dat dit op mijn ontwikkelingsmachine een verkeerd alternatief opleverde. Ter referentie, mijn 'gewone', d.w.z. werkende makefile is:

ANTLR = runantlr   ANTLR_JAR = /usr/share/java/antlr.jar

Het installeren van antlr op mijn ontwikkelingsmachine loste het probleem op.

Bedankt voor je hulp

0

1 antwoord

Ik denk dat het probleem in die regel de optie -classpath is die antlr.Tool interpreteert als het klassenpad en vervolgens probeert de optie -o te ontleden.

De optie -o is de opdrachtregel org.antlr.Tool. Het is geen JVM-optie.

De juiste manier om antlr-tool te starten is:

java org.antlr.Tool [options]

Ik ben benieuwd hoe die uitvoeringslijn eruit ziet op de machine die werkt. Omdat degene die je liet zien dat je bericht absoluut niet klopt.

3
toegevoegd
@ruakh, yep ik denk dat je gelijk hebt, die tweede ruimte ziet er absoluut verdacht uit. Ik denk dat als Kerubu ons die logregel van de werkende machine laat zien, het zou onthullen wat er mis is.
toegevoegd de auteur Strelok, de bron
Zoals Ruakh zei, is er waarschijnlijk een omgevingsvariabele die niet goed wordt uitgebreid. Zie die regel van de machine die werkt en het probleem zal worden onthuld.
toegevoegd de auteur Strelok, de bron
Ik ben stumped waarom zou het anders zijn op 2 machines. Maar kun je proberen om het make-bestand de regel voor ANTLR te wijzigen in ANTLR = java org.antlr.Tool en te kijken wat er gebeurt?
toegevoegd de auteur Strelok, de bron
1. Ik denk dat je gelijk hebt. Ziet u de twee spaties tussen -classpath en antlr.Tool ? Ik gok dat er een variabele in wordt uitgebreid, en om een ​​of andere reden is de variabele leeg/undefined. Dat wil zeggen, in plaats van java -classpath [spatie] VARIABLE [spatie] antlr.Tool ... , het is gewoon java -classpath [spatie] [spatie] antlr.Tool ... , waardoor het probleem wordt veroorzaakt dat u beschrijft.
toegevoegd de auteur ruakh, de bron
Bedankt Strelok. Ik heb geen kans gehad om de twee Buildroots te controleren, maar ik heb de relevante Makefile-regels van de 'ptoblem'-machine geciteerd en het ziet er niet naar uit zoals je suggereert. Waarom het op de ene machine zou werken en niet op de andere is een mysterie, maar ik zal het verder onderzoeken en verder rapporteren.
toegevoegd de auteur Kerry, de bron
Heeft het probleem nu opgelost. de Makefiles waren inderdaad anders, zoals ik heb aangegeven in de aanvullende informatie hierboven. Ik heb niet geprobeerd de verkeerde regel in de Makefile aan te passen, maar in plaats daarvan het ontbrekende antlr-pakket geïnstalleerd. Bedankt voor uw hulp
toegevoegd de auteur Kerry, de bron