Παιδια καλημερα εφτιαξα μια εργασια σε JAVΑ με Netbeans 6.8 και το συνδεσα με μια βαση δεδομενων. Οσο την ετρεχα στο pc μου ολα ωραια ολα καλα. Πηρα το αρχειακι .jar (Unipi..jar) που φτιαχνει το Netbeans εκανα κ export την βαση δεδομενων (unipi.sql, την ειχα φτιαξει σε mysql) και πηρα αυτα τα δυα αρχεια κ τα πηγα στα εργαστηρια της σχολης μου αλλα δεν ετρεχαν! Θεωρησα οτι μπορει να φταιει το pc για διαφορους κ πολλους λογους! Μετα δοκαμασα να τα τρεξω σε ενα Laptop ενος φιλου κ ολα ετρεχαν μια χαρα αλλα δεν επικοινωνουσε η εφαρμογη με την βαση. Μηπως παιζει προβλημα με τον msql connector??. Και γενικα αμα εχεις καποια εφαρμογη σαν αυτη τι πρεπει να κανεις για να μπορει να τρεχει σε οποιοδηποτε μηχανημα χωρις προβλημα..??
Εμφάνιση 1-9 από 9
-
04-10-10, 06:26 Προβλημα σε εφαρμογη JAVA... #1
-
04-10-10, 09:52 Απάντηση: Προβλημα σε εφαρμογη JAVA... #2
Όταν λες δεν έτρεχε; έβγαζε κάποιο λάθος; Ή δεν είχε καθόλου java; Ο υπολογιστής που το έβαλες είχε εγκατεστημένη mysql; Έκανες import την βάση;
Αυτό που λες για να την τρέχει σε οποιοδήποτε μηχάνημα, μία λύση είναι αν η βάση είναι στον ίδιο υπολογιστή να του βάλεις στο connection string localhost:3306. Επειδή όμως ποτέ δεν μπορείς να είσαι σίγουρος, το καλύτερο θα ήταν να φτιάξεις ένα db.properties αρχείο (δεν έχει σημασία το όνομα) και να το βάλεις μέσα στο jar. Από εκεί μπορείς να το φορτώνεις ως εξής:
(To αρχείο θα το έχεις στο root directory μέσα στο jar)
Κώδικας:Properties props = Properties.load(Class.getResourceAsStream("/db.properties"));
Το properties αρχείο θα μπορούσε να έχει μέσα για παράδειγμα:
Κώδικας:host=localhost port=3306 username=scott password=tiger
Σε 2η φάση θα μπορούσες να δίνεις και driver name, καθώς και schema name από τα properties.Heh, screw you guys... I'm going home!
-
05-10-10, 10:58 Απάντηση: Προβλημα σε εφαρμογη JAVA... #3
Μόνο το δικό σου jar πήρες;
Το jar με τον driver για να συνδεθείς στη βάση το πήρες;
-
09-10-10, 15:02 Απάντηση: Προβλημα σε εφαρμογη JAVA... #4
Ναι ειχε εγκατεστημενη msql το pc. Tο αρχειακι jar του msql-connector πηρα αυτο κ ξαναπηγα στο library και το ξαναεθεσα σκεπτομενος οτι μπορει να εχει χαλασει το pathfile. Αλλα μαλλον το λαθος μου ειναι οτι δεν εκανα import την βαση στο pc που δεν ετρεχε. (Οταν λεω δεν ετρεχε εννοω οτι στο cmd εβγαζε errors που αφορουσαν καποια swing).
Η ιδεα ομως του dvm ειναι πολυ ευχρηστη.
Δηλαδη μου λες σε καθε κλαση που η java επικοινωνει με την βαση να πηγαινω και να δινω π.χ. αντι
''static final String USERNAME = "root";'' κατι σαν
''static final String USERNAME = props.getProperty("username");'' αυτο ;
Οποτε σε οποιο μηχανημα θελησω να το τρεξω θα πρεπει να εχει εγκατεστημενo msqlserver; (ειμαι καινουριος στον προγραμματισμο κ μπορει οι αποριες μου να ειναι αστειες για καποιον που ασχολειται καιρο αλλα για εμενα παραμενουν να ειναι αποριες οποτε ζηταω την ανοχη σας...!)
-
09-10-10, 23:18 Απάντηση: Προβλημα σε εφαρμογη JAVA... #5
Για αρχή:
1. Κάνε copy paste εδώ ολόκληρο το stacktrace που παίρνεις όταν το τρέχεις από το command line.
2. Επίσης copy paste την εντολή που τρέχεις για να ξεκινήσεις το πρόγραμμα.
3. Περιεγραψέ μας αν έχεις κάνει κάποιες προσθήκες libraries στο CLASSPATH enviroment variable.
Η εφαρμογή σου χρειάζεται να συνδεθεί με μία βάση MySQL server που θα έχει ένα database (schema) με το όνομα που έχεις ορίσει στο connection string. ΠΧ το database name είναι dbname σε αυτό το παράδειγμα:Κώδικας:jdbc:mysql://host_name:port/dbname
Ο MySQL server μπορεί να βρίσκεται σε άλλο pc προσβάσιμο μέσω δικτύου. Στο παραπάνω παράδειγμα το pc με την MySQL έχει όνομα host_name. Θα μπορούσε να χρησιμοποιηθεί και η IP.
To connection string συνήθως αλλάζει σε κάθε environment που θες να εγκαταστήσεις οπότε πρέπει να είναι εύκολο να το αλλάζεις χωρίς να χρειάζεται recompile. Η λύση που προτείνει ο dvm είναι σωστή. Ακόμα καλύτερα θα ήταν το db.properties να είναι έξω από το jar και να περνάς το filepath του αρχείου στο πρόγραμμα μέσω JVM variable στην εντολή εκκίνησης. Έτσι είναι πιο εύκολα προσβάσιμο και δεν χρειάζεται να ανοίγεις το jar, να κάνεις edit το αρχείο και να το ξαναβάζεις.
Η εντολή εκκίνησης θα μπορούσε να περιλαμβάνει και τα extra libraries που θα πρέπει να γίνουν διαθέσιμα στο classpath, και να μπει σε ένα .bat ή .sh αρχείο.
Παράδειγμα αρχείου start.bat:
Κώδικας:java -cp myapp.jar;./libs/mysql-connector.jar;./libs/log4j.jar -Dmy-properties-file=./db.properties com.myapp.MyMain
-
11-10-10, 10:38 Απάντηση: Προβλημα σε εφαρμογη JAVA... #6
Προσοχή, όταν τρέχουμε jar δεν διαβάζει το classpath από το command line, αλλά από το MANIFEST.MF μέσα στο jar. Πρέπει να του δώσεις μια γραμμή με Class-Path: lib/mysql-connector.jar κλπ. To lib/ εδώ αναφέρεται σε relative path σε σχέση με το που εκτελείται το jar.
Επίσης....έχουμε αντικειμενοστραφή προγραμματισμό εδώ βρε, δεν θα βάζεις αυτές τις παραμέτρους σε κάθε κλάση. Το πιο απλό είναι να φτιάξεις μία κλάσση με static μεθόδους, πχ
public class DB, στον constructor θα μπορείς να τις δίνεις τις παραμέτρους, ή να διαβάζει η ίδια το αρχείο. Οποτε μετά σε κάθε κλάση που θα θες να φτιάξεις ένα query θα καλείς
Connection conn = DB.getConnection();
και μετά κάνεις ότι έχεις να κάνεις.
Για παράδειγμα η DB θα ήταν (δεν νομίζω να κάνει compile, στην γράφω στα γρήγορα να πάρεις μια ιδέα):
Κώδικας:public class DB { private static Connection conn; private static String username; private static String password; private static String url; private static String params; DB() { Properties props = Properties.load(Class.getResourceAsStream("db.properties")); username = ... password = ... } public static Connection getConnection() { // create connection here } public static closeConnection() { conn.flush(); conn.close(); conn = null; } }
Heh, screw you guys... I'm going home!
-
05-11-10, 07:40 Απάντηση: Προβλημα σε εφαρμογη JAVA... #7Κώδικας:
public class db { private static Connection connection; private static String USERNAME; private static String PASSWORD; private static String DATABASE_URL; private static String JDBC_DRIVER; private Statement statement; private static String Properties; public void DB(int StudentID, String LastnameValue, String FirstnameValue, String AddressValue, int PhoneValue) { Properties props = Properties.valueOf(Class.forName("/db.properties")); USERNAME = props.getProperty("USERNAME"); PASSWORD = props.getProperty("PASSWORD"); DATABASE_URL = props.getProperty("DATABASE_URL"); JDBC_DRIVER = props.getProperty("JDBC_DRIVER"); try{ Class.forName(JDBC_DRIVER); }catch (Exception exception){ exception.printStackTrace(); } try{ connection = DriverManager.getConnection(DATABASE_URL,USERNAME,PASSWORD); }catch (SQLException sqlException){ sqlException.printStackTrace(); } String query; query = "INSERT INTO students VALUES('"+StudentID+"','"+FirstnameValue+"','"+LastnameValue+"','"+AddressValue+"','"+PhoneValue+"')"; try{ statement = connection.createStatement(); statement.execute(query); }catch(SQLException sqlException){ sqlException.printStackTrace(); } } public void closeConnection(){ try{ statement.close(); connection.close(); }catch (SQLException sqlException){ sqlException.printStackTrace(); } } }
Κώδικας:USERNAME=root PASSWORD= JDBC_DRIVER = com.mysql.jdbc.Driver DATABASE_URL = jdbc:mysql://localhost/unipi?useUnicode=true&characterEncoding=UTF-8&characterSetResults=UTF-8
Μπορει καποιος να βοηθησει.... Ευχαριστω και παλι οσους ενδιαφερονται..
-
05-11-10, 14:03 Απάντηση: Προβλημα σε εφαρμογη JAVA... #8
-
19-11-10, 04:37 Απάντηση: Προβλημα σε εφαρμογη JAVA... #9
Οντως εχεις δικιο αλλα τελικα ποιο ειναι το κομματι του κωδικα που θα με βοηθησει να κανω αυτο που προτειναν τα παιδια πιο πανω....????
Παρόμοια Θέματα
-
Υπάρχει εφαρμογή για να βάζω limit σε CPU Usage σε συγκεκριμένη εφαρμογή;
Από sadako στο φόρουμ Software γενικάΜηνύματα: 12Τελευταίο Μήνυμα: 29-07-10, 01:31 -
Πρόβλημα με εφαρμογή που τρέχει σε java
Από gianna στο φόρουμ Unix - LinuxΜηνύματα: 25Τελευταίο Μήνυμα: 22-02-10, 18:38 -
Βοήθεια για Java Exception σε εφαρμογή NetBeans 6.8
Από thanos45 στο φόρουμ Προγραμματισμός και γλώσσες προγραμματισμούΜηνύματα: 11Τελευταίο Μήνυμα: 06-02-10, 04:04 -
Ιδιόμορφο πρόβλημα με Η/Υ που τρέχει εταιρική εφαρμογή
Από Amateur στο φόρουμ WindowsΜηνύματα: 16Τελευταίο Μήνυμα: 08-08-07, 23:45 -
Java ή C# για εφαρμογή?
Από verbo στο φόρουμ Προγραμματισμός και γλώσσες προγραμματισμούΜηνύματα: 10Τελευταίο Μήνυμα: 22-12-06, 14:18
Bookmarks