Er is een JNI-fout opgetreden, controleer uw installatie en probeer het opnieuw in Eclipse x86 Windows 8.1

De bovenstaande code werkt perfect op de laptop van mijn vriend en geeft deze foutmelding op mijn laptop. Ik heb de code op Eclipse Juno uitgevoerd met Java 7. Ik heb ook veel Java-programma’s getest en op mijn laptop uitgevoerd, alles werkt goed. Dit is het enige programma dat zo’n fout geeft. Dit is mijn laatste jaarproject en ik heb het nodig om op mijn laptop te werken, ik zal iedereen die helpt enorm dankbaar zijn


Antwoord 1, autoriteit 100%

Kort antwoord:Klik met de rechtermuisknop op de klasse die de hoofdmethode bevat. Klik op “Uitvoeren als”. Klik op “Java-toepassing”. De sneltoets is: Shift+Alt+X J (houd Shift en Alt ingedrukt en druk op X; laat Shift en Alt los en druk op J).

Lang antwoord:Om eerlijk te zijn, weet ik niet 100% zeker waarom dit probleem optreedt. Het kan komen door het gebruik van een andere jdk.
Ik liep tegen dezelfde fout aan. De oplossing was makkelijker dan ik had gedacht. Ik was gewend om mijn code uit te voeren met Ctrl + F11. Maar toen ik het als een Java-toepassing uitvoerde (zoals ik beschreef in “kort antwoord”), was het probleem opgelost. Ik weet niet zeker of het ook de problemen van anderen oplost, maar het is de moeite waard om het te proberen. 🙂


Antwoord 2, autoriteit 98%

Ik heb dit probleem al een tijdje, maar nu heb ik het door.

Het blijkt dat Java JDK 12 zowel de JRE als de JDK in de bin-map van de Java 12 JDK heeft. (Ik heb altijd geloofd dat JRE en JDK verschillende toepassingen zijn, maar het blijkt dat er dingen zijn veranderd)

Mijn probleem was dat ik Java JDK 12 op mijn computer had geïnstalleerd

Tegelijkertijd had ik Java 8 (JRE) op mijn computer geïnstalleerd.

Dus mijn computer raakt in de war.

Met mijn opdrachtpromptomgeving om Java- en Javac-opdrachten uit te voeren:

Ik typte de volgende commando’s:

java -version  

// dit gaf me Java 8

Daarna typte ik:

javac -version

// dit gaf me Java 12

Met andere woorden, mijn programma wordt gecompileerd met Java 12 en ik probeer Java 8 te gebruiken.

Om het probleem op te lossen, heb ik Java 8 JRE van mijn computer verwijderd.

Ging terug naar de opdrachtprompt om te controleren of “java -version” en “javac -version” hetzelfde versienummer retourneren, en ja, het geeft Java 12 terug.

Geprobeerd mijn programma opnieuw te compileren en uit te voeren. Het is gelukt!!

Het werkte!
Eureka!!


Antwoord 3, autoriteit 34%

De jar uitvoeren vanaf de opdrachtregel door:

C:\folder\where\jar\stored>java -jar JarName.jar

Ik heb informatie gekregen die het probleem duidelijker heeft gemaakt:

main/Main is gecompileerd door een recentere versie van Java
Looptijd

In dit geval is jar gecompileerd met een nieuwere versie dan jre ondersteunt.


Antwoord 4, autoriteit 30%

Fout:Er is een JNI-fout opgetreden, controleer uw installatie en probeer het opnieuw in Eclipse

Oplossing:Controleer uw pakketnaam, want deze kan in botsing komen met de pakketnaam in Java. Wijzig eenvoudig de pakketnaam om uw probleem op te lossen. 🙂


Antwoord 5, autoriteit 21%

Ik had soortgelijke problemen bij het gebruik van ‘java’ aan het begin van de pakketnaam, b.v. java.jem.pc

Controleer de uitvoer van uw console, ik ontving:

Exception in thread "main" java.lang.SecurityException: Prohibited package name: java.jem.pc

6, Autoriteit 13%

Hallo ik geconfronteerd met een soortgelijk probleem met een project, in Intellij met Maven-afhankelijkheden.

Ik heb opgelost dat het de afhankelijkheden van meegeleverde reikwijdte verandert om te compileren.

Intellij :

Bestand & GT; Projectstructuur & GT; Modules & GT; Afhankelijkheden & GT; Scope (bieden aan
compileren)


7, Autoriteit 11%

U kunt de console eerst controleren om het werkelijke foutbericht te bekijken en vervolgens verder te gaan door te zoeken naar antwoorden voor die fout.

Mijn console toont de foutnoclassdeffound voor de klas JCOMMANDER.
Je fout zal waarschijnlijk verschillen van de mijne. De oorzaak van mijn fout is dat de klasse JCommander niet in mijn M2-repository is, dus ik moet die afhankelijkheid in mijn POM.XML gewoon toevoegen. U kunt controleren of alle classafhankelijkheden allemaal worden gedeclareerd en toegevoegd in uw huidige configuratie- en projectbouw. ​​

noclassdeffoundError


8, Autoriteit 11%

Ik heb het opgelost, het veranderen van mijn ‘compiler compliance level’. In Eclipse:

Window – & GT; Voorkeuren – & GT; Java – & GT; Compiler


9, Autoriteit 6%

Ik heb ook geconfronteerd met hetzelfde probleem. Door naar de console te kijken die zegt

java.lang.securityException-probleem.

De -oplossing is:

Controleer uw pakketnaam van uw project.

Ik hoop dat uw probleem zal worden opgelost. Zo niet, druk dan uw console-trace af voor het volgen van de oorzaak.


10, Autoriteit 6%

Het kan gebeuren als de JDK-versie anders is.

Probeer dit met Maven:

<properties>
    <jdk.version>1.8</jdk.version>
</properties>

onder build- & gt; plug-ins:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.3.2</version>
    <configuration>
        <source>${jdk.version}</source>
        <target>${jdk.version}</target>
    </configuration>
</plugin>

11, Autoriteit 4%

Ik heb gevonden dat het toevoegen van deze regels code aan het POM.XML-bestand van het MAVEN-project lost vergelijkbare problemen op: –

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <configuration>
                <archive>
                    <manifest>
                        <mainClass>com.packagename.MainClassName</mainClass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>2.3</version>
            <configuration>
                <createDependencyReducedPom>false</createDependencyReducedPom>
            </configuration>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

Antwoord 12, autoriteit 2%

Controleer je console. Er staat java.lang.SecurityException-probleem. Wijzig uw ‘pakketnaam’. Ik veranderde mijn pakketnaam van ‘java.assessment’ in ‘assessment’ en het werkte voor mij.
Als iemand de oorzaak weet, laat het me dan alsjeblieft weten.


Antwoord 13, autoriteit 2%

MOGELIJKE OPLOSSING
Als GEEN van deze oplossingen voor u heeft gewerkt, probeer dan dit … Ik heb eindelijk de mijne werkend gekregen door de twee mappen “.metadata” & “.recommenders” in de werkruimtemap. U kunt het pad van uw werkruimtemap vinden door te klikken op “Bestand”>”Switch Workspace”>”Other” in de werkbalk van de Eclipse-toepassing.

Nu ben ik een complete noob die zich een weg door een SE-graad aan de San Jose State University huilt. Dus ik deel gewoon wat voor mij werkte zonder veel kennis te hebben van waarom precies. Ik weet niet welke schade of hoofdpijn, of zelfs of beide bovengenoemde mappen moesten worden verwijderd. Maar uiteindelijk werkte het voor mij en het lijkt erop dat de applicatie toch gewoon nieuwe versies van die mappen maakt.


Antwoord 14, autoriteit 2%

Ik heb hetzelfde probleem ondervonden, maar in mijn geval was dit te wijten aan de configuratie-instellingen in IntelliJ IDEA.

Hoewel de project-SDK (File -> Project Structure) was ingesteld op Java 11, was de JRE in de Run/Debug Configurations (Run -> Edit Configurations) ingesteld op Java 8.
Nadat ik dat had veranderd in Java 11, werkte het als een tierelier.


Antwoord 15

Ik had een soortgelijk probleem en kreeg toen de oplossing in de pakketnaam.
Ik heb de pakketnaam behouden als java.basics. In de console kreeg ik daar een hint voor omdat er duidelijk de naam van het verboden pakket stond. Dus ik veranderde de pakketnaam en het werkte.


Antwoord 16

bewerk het “.classpath” en voeg de onderstaande tag toe

<classpathentry kind="con" path="org.testng.TESTNG_CONTAINER"/>

dit zou je probleem kunnen oplossen.


Antwoord 17

Ik hoop dat dit iemand anders helpt. Ik had hier last van toen ik een paar jaar geleden aan een project werkte en toen begon een baan in een nieuwer project een paar dagen geleden te mislukken. Ik vond dit bericht en probeerde me te herinneren wat ik in mijn project had gewijzigd en toen herinnerde ik me dat ik mijn maven pom had veranderd en de vermelding voor maven-jar-plugin had verwijderd. Wanneer u een jar bouwt waarvan het doel uitvoerbaar is, moet u dit opnemen zodat bepaalde vermeldingen in het manifest worden geschreven. Ik opende het oude project, kopieerde dat item (met enkele aanpassingen voor de projectnaam) en het werkte.


Antwoord 18

Ik denk dat dit gebeurt omdat de naam van je klasse dezelfde naam is van een andere klasse in de JDK . Help eclipse om te bepalen welke u probeert uit te voeren door het pakket te selecteren waarin uw klas zich bevindt. Ga naar configuratie uitvoerenselecteer het project en de hoofdklasse.

Als je op de zoekknop drukt om de hoofdklasse te selecteren, zul je opties vinden die dezelfde naam hebben maar een ander pakket, selecteer je klas.


Antwoord 19

Er was geen informatie in mijn console, dus ik ging op zoek naar aanvullende oplossingen en vond deze – uniek voor de oplossingen die hier worden gepresenteerd. Ik kwam dit tegen toen Eclipse Oxygen probeerde een oude Ant-build op een project uit te voeren.

Oorzaak 1
Ik had Eclipse geconfigureerd om een externe Ant-installatie te gebruiken, versie 1.10.2 die blijkbaar klassen bevatte die waren gecompileerd met JDK 9. In Eclipse kreeg ik de hierboven beschreven JNI-fout (het uitvoeren van de Ant-build op de opdrachtregel gaf me de bekende ‘niet-ondersteunde major.minor-versie’-fout – de Java die ik op het systeem gebruikte was JDK 8).

De oplossing was om terug te draaien naar de ingesloten Eclipse-versie van Ant, namelijk 1.10.1. Ik heb dit geverifieerd als de juiste oplossing door Ant 1.10.1 afzonderlijk te downloaden en Eclipse opnieuw te configureren om de nieuwe 1.10.1 extern te gebruiken en het werkte nog steeds.

Oorzaak 2
Dit kan ook gebeuren als je de Ant Runtime-instellingen verkeerd hebt geconfigureerd in de voorkeuren van Eclipse. Afhankelijk van de versie van Ant die u gebruikt, moet u de tools.jar van de juiste JDK toevoegen aan het klassenpad dat wordt gebruikt voor de Ant Runtime (Home Entries). Meer specifiek, zonder een juiste configuratie, zal Eclipse bij het starten van een Ant-doel klagen dat de JRE-versie minder is dan een bepaalde vereiste versie.

In wezen ‘juiste configuratie’ betekent het uitlijnen van elk van de configuratie-items in Eclipse voor het uitvoeren van mier, zodat ze allemaal samenwerken. Dit omvat het mieren-runtime-huis -invoer (moet wijzen op een mierenversie die compatibel is met de door u gekozen JDK – u kunt mier niet met JDK 8 uitvoeren wanneer deze is samengesteld tegen JDK 9); De tools.jardie behoort tot de JDK waarmee u mier wilt uitvoeren in de mierinstellingen; en eindelijk de JRE-omgeving van uw build-script instellen op de JDK die u wilt uitvoeren in de configuratie van externe hulpmiddelen. Alle 3 van deze instellingen moeten overeenkomen om de hierboven beschreven fout te vermijden. U moet ook rekening houden met de kenmerken die worden gebruikt in uw javac-tag om ervoor te zorgen dat de JDK die u gebruikt, in staat is om te executeren zoals u hebt geleid (dwz JDK 7 kan code niet compileren met de bron en Doel versie 8).

bovendien
Als je echt gewoon probeert een mier-build-script uit te voeren om code te compileren aan een oudere JDK (bijvoorbeeld minder dan 8 voor zuurstof), hielp dit artikel toegang te krijgen tot Run Ant tegen een oudere JDK . Er zijn antplug-in-vervangingen voor een handvol versies van Eclipse, de instructies zijn kort en het krijgen van de juiste plug-in-versie voor uw specifieke verduistering is belangrijk.

of simpelweg U kunt deze zeer goede oplossing gebruiken om uw erfenis compileer te doen Vereist niet om uw Eclipse-plug-in te vervangen, maar in plaats daarvan de javacTag in uw build-script wijzigen (tijdens het gebruik van de nieuwste JDK).


20

Ik heb dezelfde fout ingonden wanneer ik de volgende Maven-afhankelijkheid in mijn project toevoeg:

<artifactId>aws-encryption-sdk-java</artifactId>

De fout deed zich alleen voor toen ik het shade jar-bestand uitvoerde dat werd geproduceerd door maven-shade-plugin. Ik heb de fout kunnen verhelpen door de jar te gebruiken die is geproduceerd door maven-assembly-plugin.


Antwoord 21

Alles werkt niet voor mij, maar zodra ik de “.metadata” & “.recommenders” van de werkruimte en verwijder ook de map “bin” en “setting” en nadat ik hetzelfde project opnieuw heb geïmporteerd, werkte het voor mij.


Antwoord 22

Mijn probleem kwam van het proberen de Maven-natuur van mijn project uit te schakelen en vervolgens het bestand pom.xmlte verwijderen. Dit is erg, heel erg, doe dit niet. Als je dat doet, verander het dan terug naar een Maven-project en hopelijk kun je ofwel je oude pom.xml-bestand herstellen of een nieuw maken. Zodra ik dat deed, werkte het weer.

EDIT: Ik kwam dit probleem onlangs weer tegen en deze keer was het omdat ik dubbele bibliotheken in mijn klassenpad had. Degene die Maven heeft toegevoegd (die begon met /M2_REPO/…. en daarna een die ik had toegevoegd (wat ik niet had moeten doen). Hoewel Eclipse meldde dat het de klas niet kon vinden, was het werkelijke probleem dat ik gaf het twee bibliotheken met dezelfde klasse en het wist niet welke het moest gebruiken. Nadat ik de tweede verwijzing had verwijderd, werkte het.


Antwoord 23

Ondervond hetzelfde probleem in Netbeans 8.0.2. Clean and Build Projectloste dit probleem op.


Antwoord 24

Je kunt het volgende proberen:
klik met de rechtermuisknop op het project en klik vervolgens op opschonen. Voer daarna het project uit.

Het werkt voor mij.


Antwoord 25

De programma’s die op de ene versie van jdk zijn geschreven, ondersteunen het JNI-platform van een andere versie van jdk niet. Als we jdk10 en jdk8 gebruiken, is eclipse geconfigureerd voor jdk10 en code geschreven op jdk10. Nu, ik wil jdk10 niet gebruiken en begon jdk8 als jvm te gebruiken en probeerde de code uit te voeren die op jdk10 is geschreven, dus eclips zal door fout van JNI. Dus, om uit deze fout te komen, voeg je het huidige JVM-pad toe aan het eclipse.ini-bestand, kopieer daarna de geschreven code naar het klembord en verwijder het project in eclipse en maak een nieuw project en check de gekopieerde code in en voer het uit.


Antwoord 26

Als het probleem zich voordoet tijdens het starten van een ANT, controleer dan je ANT HOME: deze moet verwijzen naar dezelfde eclipse-map die je gebruikt.

Het overkwam me terwijl ik een nieuwe eclipse-versie opnieuw installeerde en eerdere eclips-fodler verwijderde terwijl ik de vorige mier thuis hield: ant vond gewoon geen java-bibliotheek.

Dit is in dit geval geen slechte JDK-versie.


Antwoord 27

Ik heb hetzelfde probleem ondervonden omdat de pakketnaam “Java” was nadat de naam van het pakket was gewijzigd, er werd geen fout gegenereerd.


Antwoord 28

In mijn geval gaf Eclipse me deze foutmelding, maar ik kreeg classnotfoundexception op javax.servlet.http.HttpServletin de logs.

In mijn geval probeerde ik een spring-boot-app te starten met exclude module: 'spring-boot-starter-tomcat'in mijn build.gradle (aangezien ik op Wildfly implementeer) .

De oplossing was om dit uitsluiten te becommentariëren. De eclipse JNI-fout was erg misleidend en ik zou willen voorstellen om dit op te lossen.


Antwoord 29

had hetzelfde probleem.
Ik had een nieuwere versie van de json-bibliotheek geïmporteerd (de oude verwijderd – maar niet verwijderd uit het buildpad). Opgelost door de verwijzing naar de oude uit het bouwpad te verwijderen

Other episodes