Toon posts:

[java]VerifyError

Pagina: 1
Acties:

Verwijderd

Topicstarter
Situatie:
----------
Ik ben een kortingSysteem aan't maken dat "pluggable" is aan de hand van ini-bestanden. In het ini-bestand schrijf je de naam van de kortingsklasse. Deze wordt dan ingeplugged in de interace KortingIF (door middel van reflection).

Nu zou je ook meerdere kortingen moeten kunnen inpluggen.Je moet dan kiezen of dat de kortingen cumulatief zijn, of de laagste, of de hoogste wordt gekozen voor de klant.

Relatie tussen de objecten:
-------------------------------------
Bij één korting heeft de klasse Verkoop een private member van het type KortingIF, bij het "inpluggen" wordt hierdan een concrete intantie van een kortingsklasse aan toegekent

Voor meerdere kortingen per verkoop heb ik de member vervangen door een array van het type KortingIF[];

probleem:
------------
Het probleem zit bij het inpluggen. (Alles werkt wel wanneer je slechts één KortingIF heb, dus geen array).

Verkoop heeft een statische methode:
code:
1
2
3
4
5
private static kortingIF[] kortingen;

public static void setKortingType(KortingIF[] kortingen){
    kortingen = kortingen;
}


Bij het aanroepen van deze methode loopt het mis.

code:
1
2
3
KortingFactory kf = KortingFactory.getInstantie();
KortingIF[] kortingen= kf.getKortingen();
Verkoop.setKortingType(kortingen);


Fout @runtime:
code:
1
Java.lang.VerifyError in class tekoop method: korting signature() D) Register pair 3/4 contains wrong type.

Deze error verwijst naar de methode korting: dit is een publieke non-statische methode dus ik begrijp in hemelsnaam niet wat deze er mee te maken heeft. In deze methode wordt er gekeken welke type van korting ik heb gekozen (min,max, cumulatief) en aan de hand daarvoor itereren door de kortingen van de verschillene kortinsmogelijkheden en de beste geven.

Volgens de documentatie staat deze error voor onveilige code. Wil dat zeggen dat de methode "korting" "onveilig" is??

[ Voor 4% gewijzigd door Verwijderd op 02-01-2004 23:19 ]


  • Eelke Spaak
  • Registratie: Juni 2001
  • Laatst online: 27-05 10:14

Eelke Spaak

- Vlad -

Je kan geen 'this' aanroepen in een statische methode. Dat refereert namelijk naar de huidige instantie van de klasse (een object dus), en statische methoden horen bij de klasse en niet bij een object.

Verder refereer je ook nog eens aan 'kortingen' terwijl je veld 'korting' heet.

TheStreme - Share anything with anyone


Verwijderd

Topicstarter
Vladimir G. schreef op 02 januari 2004 @ 21:28:
Je kan geen 'this' aanroepen in een statische methode. Dat refereert namelijk naar de huidige instantie van de klasse (een object dus), en statische methoden horen bij de klasse en niet bij een object.

Verder refereer je ook nog eens aan 'kortingen' terwijl je veld 'korting' heet.
this en korting waren tikfout, code is in het engels. Ik heb het even vertaald voor de gemakkelijkheid.

  • Gert
  • Registratie: Juni 1999
  • Laatst online: 05-12-2025
Weet jij welke kortingen kortingen worden in de setKortingType methode?

[ Voor 4% gewijzigd door Gert op 02-01-2004 23:41 ]


  • zoepercavia
  • Registratie: September 2001
  • Laatst online: 26-12-2025
Misschien moet je even wat meer onvertaalde code posten.

Panacea.NL als je geinteresserd bent in IT en Geneeskunde!


Verwijderd

>kortingen = kortingen;
je zegt hier: jij bent jezelf

>setKortingType
ies typisch iets voor een Object en niet voor een klasse

wat mij wat lijkt is:
Verkoop.kortingen = kortingen;

Verwijderd

Topicstarter
Verwijderd schreef op 03 januari 2004 @ 17:27:
>kortingen = kortingen;
je zegt hier: jij bent jezelf

>setKortingType
ies typisch iets voor een Object en niet voor een klasse

wat mij wat lijkt is:
Verkoop.kortingen = kortingen;
eerste >> eigenlijk staat er: reduction = reduct;

Verkoop.kortingen = kortingen >> dan moete da publiek maken en da willek ni echt

  • Gert
  • Registratie: Juni 1999
  • Laatst online: 05-12-2025
Waarom zou je dan niet eens de engelse versie posten? Tot nu toe hebben we alleen nog maar nederlandse vertalingsfouten zitten debuggen. We zijn toch geen kleuters die geen engels snappen?

  • martijn_brinkers
  • Registratie: November 2001
  • Laatst online: 31-10-2025
Volgens de documentatie staat deze error voor onveilige code. Wil dat zeggen dat de methode "korting" "onveilig" is??
Die error wil zeggen dat de 'byte code verification' niet geslaagd is. Het lijkt er dus op dat je class file niet goed is. Ik neem aan dat je ergens gebruik maakt van een classloader om de plugin te laden. Misschien gaat daar iets fout. Is je class file wel oke?

Verwijderd

Topicstarter
het probleem zat in de methode reduction van de klasse sales.

Verkeerde variabele gebruikt... hoe zou da komen dat hij dan zo'n rare vfout geeft?
Pagina: 1