Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[java] EXCEPTION_ACCESS_VIOLATION

Pagina: 1
Acties:

Verwijderd

Topicstarter
hallo iedereen, ik ben een eerste jaars student Bachelor in de toegepaste informatica. Ik hou mij de laatste tijd bezig met het maken van een Adresboek met java. Nu krijg ik een fout die ik nog niet kan oplossen (java kennis te beperkt). Nadat ik geschreven heb in mijn database (access) komt er volgend error op. Enig idee hoe ik dit oplos?
de code van mij Gui is:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#
# An unexpected error has been detected by Java Runtime Environment:
#
#  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x7c901010, pid=5100, tid=5440
#
# Java VM: Java HotSpot(TM) Client VM (1.6.0_01-b06 mixed mode)
# Problematic frame:
# C  [ntdll.dll+0x1010]
#
# If you would like to submit a bug report, please visit:
#   http://java.sun.com/webapps/bugreport/crash.jsp
#

---------------  T H R E A D  ---------------


de code van programma kun je hier vinden *snip*
bedankt

[ Voor 3% gewijzigd door een moderator op 15-02-2008 13:34 ]


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Heb je al gedebugged? Gekeken waar het mis gaat? Debuggen: Hoe doe ik dat?
Het is hier niet de bedoeling dat je een linkje post naar een lap code en dat wij wel even gaan puzzelen waar het dan zit of kan zitten. Als je hier een topic opent zien we graag relevante code in het topic (tussen code tags, zoals je al gedaan had).

Verder mis ik wat je al gezocht/gevonden hebt; op die foutmelding heb ik toch [url="[b]http://www.google.com/search?hl=en&q=EXCEPTION_ACCESS_VIOLATION[/b]"]heel wat resultaten[/url] waaruit je toch ook zou moeten kunnen opmaken wat (ongeveer) de betekenis is.

En als ik naar je code kijk mis ik ook nog eens de 'nitty gritty', namelijk de persistentielaag; wat gebeurt daar dan bij het opslaan? De code die je nu post lijkt mij niet voldoende.

Graag verwijs ik je naar onze Programming Beleid Quickstart en verzoek je vriendelijk je topic even aan te vullen met de relevante informatie.

[ Voor 40% gewijzigd door RobIII op 12-02-2008 23:29 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Verwijderd

Topicstarter
ok srry voor de onduidelijkheid. Ja kheb ook eens gegoogled. maarja kweet eigenlijk niet direct waar ik moet beginnen kijken. Srry mensen.
De "Opslaan" methode is

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
    public Persistentie() {
    
    }
    public void voegToe(String Naam, String Voornaam, String Straat, String Straatnummer, String Gemeente, String Postcode, String Land, String Email, String Telefoonnummer, String Gsmnummer)
    {
        Statement stmt = null;
        try
        {
        String sql= "INSERT INTO Adressbook ( Naam, Voornaam,Straat, Straatnummer,Gemeente,Postcode,Land,Email,Telefoonnummer,Gsmnummer) VALUES('"+Naam+"','"+Voornaam+"','"+Straat+"','"+Straatnummer+"','"+Gemeente+"','"+Postcode+"','"+Land+"','"+Email+"','"+Telefoonnummer+"','"+Gsmnummer+"')";  
        
        PreparedStatement pstmt = connection.prepareStatement(sql);
        pstmt.executeUpdate();

        
        }
        catch(SQLException sqlException)
        {
            sqlException.printStackTrace();
            System.exit(1);
        }

    try {
            connection.close();
        } catch (SQLException e) {
        
            e.printStackTrace();
        }
    
    }

Maar de parameters slaat hij wel op in de db

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Sowieso zou ik eens even kijken naar Over het gebruik van Parametrized Queries; deze code is een disaster waiting to happen.

Verder vermoed ik dat je ergens een NULL weg schrijft, of een veld weglaat dat geen default value heeft (of dat je uit gaat van een autonummering o.i.d. die er niet is).
Ah:
Verwijderd schreef op dinsdag 12 februari 2008 @ 23:27:
Maar de parameters slaat hij wel op in de db
Dan gaat het dus nog na de executeUpdate fout; dat moet toch te debuggen zijn...

En waarom definieer je een "stmt" variabele die je verder niet gebruikt? En ik zie je een connectie sluiten die je nergens opent; waarom regel je dat niet ook wat 'centraler'?

Verder wil ik je verzoeken (kom op zeg, bachelor ;) ) om wat minder MSN te schrijven en wat meer ABN ;) Dit leest rete-irritant. Gebruik hoofdletters in interpunctie waar nodig en schrijf 'srry' en 'kheb' bijvoorbeeld gewoon netjes voluit.

[ Voor 40% gewijzigd door RobIII op 12-02-2008 23:36 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Verwijderd

Topicstarter
ja ik heb veel problemen gehad met de opslaan methode. Ik wou het eerst doen met een Result statement. Daarom dat die stmt variabele er nog instaat.. Maarja ik zal er morgen eens voor kijken om te Debuggen. Ik ben nog nie echt een held in java/Together. Ik leer nog niet zolang java. Alvast al bedankt voor je snelle reacties

[ Voor 4% gewijzigd door Verwijderd op 12-02-2008 23:38 ]


  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

RobIII schreef op dinsdag 12 februari 2008 @ 23:31:
Sowieso zou ik eens even kijken naar Over het gebruik van Parametrized Queries; deze code is een disaster waiting to happen.

Verder vermoed ik dat je ergens een NULL weg schrijft, of een veld weglaat dat geen default value heeft (of dat je uit gaat van een autonummering o.i.d. die er niet is).
Ah:

[...]

Dan gaat het dus nog na de executeUpdate fout; dat moet toch te debuggen zijn...

En waarom definieer je een "stmt" variabele die je verder niet gebruikt? En ik zie je een connectie sluiten die je nergens opent; waarom regel je dat niet ook wat 'centraler'?

Verder wil ik je verzoeken (kom op zeg, bachelor ;) ) om wat minder MSN te schrijven en wat meer ABN ;)
Waarom hij dat niet centraler doet: Dat leren ze nog niet, dat leren ze (we, ik studeer 2de jaar bachelor toegepaste informatica) gewoonweg te weinig. Er wordt gewerkt met apps van veel te weinig regels code, waardoor centraliseren niet uitmaakt / nodig lijkt. Totdat er dan eens aan iets groot gewerkt moet worden, dan wordt het een soep.

* Snake spreekt uit ervaring, projecten doe ik alleen, klasgenoten snappen er toch niets van.

Going for adventure, lots of sun and a convertible! | GMT-8


  • Confusion
  • Registratie: April 2001
  • Laatst online: 01-03-2024

Confusion

Fallen from grace

Een snelle Google op die foutmelding suggereert dat het probleem in de MS-SQL Java driver die je gebruikt kan zitten. Probeer http://jtds.sourceforge.net/ eens.

[ Voor 3% gewijzigd door Confusion op 13-02-2008 08:51 ]

Wie trösten wir uns, die Mörder aller Mörder?


  • Robtimus
  • Registratie: November 2002
  • Laatst online: 20-11 13:37

Robtimus

me Robtimus no like you

Dit soort access violations worden niet veroorzaakt door Java code maar door native code (eventueel in de JVM zelf). Het enige dat je kan doen in Java is opzoeken welke call van een native method deze fout veroorzaakt, en dan daar verder kijken.

In jouw geval is dat waarschijnlijk een 3rd party library (SQL driver) en zul je dus of die moeten vervangen of bij de maker een bugfix aanvragen.

More than meets the eye
There is no I in TEAM... but there is ME
system specs


Verwijderd

waarschijnlijk zit het hem in de databasedriver. Waarschijnlijk een oude versie driver of een oude versie jdk waar de driver geen rekening mee houdt of zoiets. Geen idee welke database je gebruikt en hoe je verbinding legt, maar waarschijnlijk zit het hem daar in.

Een kleine tip, ik zie je dat je connection.close() buiten het eerste try-block hebt gezet. Dat is op zich goed, want als je in de catch schiet zou anders de connection.close() nooit meer uitgevoerd worden. Echter, dat wordt hij nog steeds niet als je een return of een throw in de bovenstaande try of catch zet.
Java heeft daarvoor een try/catch/finally-constructie.
Java:
1
2
3
4
5
6
7
8
9
10
11
12
try{
 connection.open();
 doSomething(connection);
 if(success){
   return;
 }
} catch(SomeException e){
 log(e);
 throw e;
} finally{
  connection.close();
}

De finally wordt altijd tot slot uitgevoerd. Ongeacht of alles goed gaat, mis gaat, returned of throwd. Zo weet je zeker dat connection.close() wordt aangeroepen.

p.s. al eens geprobeerd je pc opnieuw op te starten?

[ Voor 5% gewijzigd door Verwijderd op 15-02-2008 13:35 ]


  • flowerp
  • Registratie: September 2003
  • Laatst online: 11-09 18:20
Zoals icemanx al zegt: dit is native code en geen probleem wat ontstaat in je Java code zelf en wat dus makkelijk te debuggen is.

Nog een tip naast wat de anderen al opmerkte: gebruik liever geen Nederlands in je source code. Dat is een vervelende gewoonte waar je mogelijk later nog problemen mee kan krijgen als je in een team werkt. Verreweg de meeste programmeurs gebruiken Engels.

It's shocking to find how many people do not believe they can learn, and how many more believe learning to be difficult.


  • Remus
  • Registratie: Juli 2000
  • Laatst online: 15-08-2021
Update naar Java 6 Update 4, update je database driver naar de laatste versie en kijk dan of de foutmelding nog steeds optreedt. Zo ja, meldt hem dan aan bij Sun zoals ook in de foutmelding staat.
Pagina: 1