Νέος - απορία στην java

Συζητήσεις για γλώσσες προγραμματισμού και θέματα σχετικά με προγραμματισμό.
User avatar
Zifnab
Venus Former Team Member
Posts: 7581
Joined: Tue Nov 15, 2005 2:42 am
Academic status: MSc
Gender:
Location: Connecticut
Contact:

Re: Νέος - απορία στην java

Post by Zifnab » Thu Oct 27, 2011 8:59 pm

naermataron wrote:εγώ προσπαθώ να εκτελεσω αυτό εδώ http://img51.imageshack.us/img51/4830/112pq.png όπως μας το έδειξαν στη σχολή , τώρα , το τι σημαίνει αυτή η εντολή import acm.program.* , δεν το ξέρω
Κάτι μου βρωμάει ότι έχει στηριχθεί εδώ http://jtf.acm.org/rationale/program-package.html - υλικό 2006 και πρίν... Δεν έχουν νόημα αυτά.. :smt021
import και extends για να εκτελέσει ένα πρόγραμμα hello world??

τρέξε αυτό για πρώτο πρόγραμμα...

Code: Select all

class test {
   public static void main(String args[]) {
       System.out.println("Hello Worldz");
   }
}
User avatar
naermataron
bit level
bit level
Posts: 40
Joined: Thu Oct 27, 2011 12:57 pm
Academic status: N>4
Gender:

Re: Νέος - απορία στην java

Post by naermataron » Thu Oct 27, 2011 9:05 pm

αυτό εδώ λειτουργεί κανονικά

Code: Select all

class test2
{  
        public static void main(String args[])
        {
           System.out.println("Hello World!");
        }
}
όμως αυτό μας το ανέφερε απλά σαν εναλλακτικό και δευτερεύον τρόπο
User avatar
Zifnab
Venus Former Team Member
Posts: 7581
Joined: Tue Nov 15, 2005 2:42 am
Academic status: MSc
Gender:
Location: Connecticut
Contact:

Re: Νέος - απορία στην java

Post by Zifnab » Thu Oct 27, 2011 9:07 pm

naermataron wrote:αυτό εδώ λειτουργεί κανονικά

Code: Select all

class test2
{  
        public static void main(String args[])
        {
           System.out.println("Hello World!");
        }
}
όμως αυτό μας το ανέφερε απλά σαν εναλλακτικό και δευτερεύον τρόπο
Είναι ο πρωτεύων τρόπος αυτός που λέει για δευτερεύοντα - κανείς δεν κάνει import το acm.program...
Αν θες ντε και καλά να το κάνεις έτσι ψάξε το dll για 64-bit του acm.program και βάλτο στο system64 (?)
User avatar
naermataron
bit level
bit level
Posts: 40
Joined: Thu Oct 27, 2011 12:57 pm
Academic status: N>4
Gender:

Re: Νέος - απορία στην java

Post by naermataron » Thu Oct 27, 2011 9:10 pm

για παράδειγμα εντολές όπως int x; int y=12; x = readInt(); αυτές με ποιό τρόπο τις εκτελώ ?
User avatar
Zifnab
Venus Former Team Member
Posts: 7581
Joined: Tue Nov 15, 2005 2:42 am
Academic status: MSc
Gender:
Location: Connecticut
Contact:

Re: Νέος - απορία στην java

Post by Zifnab » Thu Oct 27, 2011 9:13 pm

naermataron wrote:για παράδειγμα εντολές όπως int x; int y=12; x = readInt(); αυτές με ποιό τρόπο τις εκτελώ ?
Ok για να επανορθώσω - με αυτό το πακέτο έκαναν και το μάθημα στο Stanford (2006).. - Εμείς κάναμε custom μεθόδους τα προηγούμενα χρόνια (μέχρι πέρυσι χρησιμοποιούσαν Scanner / my κάβουρα / κτλ..) - οπότε αυτό που πρέπει να γίνει είναι βάλουμε το acm dll για 64bit για να μπορείς να δουλέψεις.. Δεν βλέπω να έχει προχωρήσει το project αυτό της ACM και να έχει βγει βιβλιοθήκη dll για 64-bit..

edit: Κατέβασε το jar από εδώ και πρόσθεσε το κατά την εκτέλεση..
java test -jar acm.jar (στο περίπου)
http://jtf.acm.org/acm.jar

edit2: Το jar είναι για 32-bit - οπότε όπως λέγαμε πριν μάλλον θα υπάρχει πρόβλημα για όλους όσους έχουν 64-bit
Spoiler: εμφάνιση/απόκρυψη
- βάλτε Virtual Machine 32bit : Overkill :lol:
User avatar
naermataron
bit level
bit level
Posts: 40
Joined: Thu Oct 27, 2011 12:57 pm
Academic status: N>4
Gender:

Re: Νέος - απορία στην java

Post by naermataron » Thu Oct 27, 2011 9:17 pm

Zifnab wrote:
naermataron wrote:για παράδειγμα εντολές όπως int x; int y=12; x = readInt(); αυτές με ποιό τρόπο τις εκτελώ ?
Ok για να επανορθώσω - με αυτό το πακέτο έκαναν και το μάθημα στο Stanford.. - Εμείς κάναμε custom μεθόδους τα προηγούμενα χρόνια - οπότε αυτό που πρέπει να γίνει είναι βάλουμε το acm dll για 64bit για να μπορείς να δουλέψεις..

ευχάριστώ πολύ κατάλαβα :-) θα ψάξω και εγώ να το βρώ το acm για 64bit στο google ,
fripp
bit level
bit level
Posts: 40
Joined: Fri Nov 12, 2010 1:03 pm
Academic status: Professor
Gender:

Re: Νέος - απορία στην java

Post by fripp » Tue Nov 01, 2011 2:58 pm

naermataron wrote:
Zifnab wrote:
naermataron wrote:για παράδειγμα εντολές όπως int x; int y=12; x = readInt(); αυτές με ποιό τρόπο τις εκτελώ ?
Ok για να επανορθώσω - με αυτό το πακέτο έκαναν και το μάθημα στο Stanford.. - Εμείς κάναμε custom μεθόδους τα προηγούμενα χρόνια - οπότε αυτό που πρέπει να γίνει είναι βάλουμε το acm dll για 64bit για να μπορείς να δουλέψεις..

ευχάριστώ πολύ κατάλαβα :-) θα ψάξω και εγώ να το βρώ το acm για 64bit στο google ,
Δοκίμασε να μεταγλωττίσεις & εκτελέσεις το εξής πρόγραμμα:

Code: Select all

import acm.program.*;

public class test extends Program {
      public void run() {
             println("Hello world!!!");
      }

      public static void main(String[] args) {
             new test().start(args);
      }
}
Με αυτό τον τρόπο μπορείς να χρησιμοποιείς τις συναρτήσεις του πακέτου acm.jar, π.χ., readInt(), στην περίπτωση που η run() μόνη της αποτυγχάνει.
User avatar
Zifnab
Venus Former Team Member
Posts: 7581
Joined: Tue Nov 15, 2005 2:42 am
Academic status: MSc
Gender:
Location: Connecticut
Contact:

Re: Νέος - απορία στην java

Post by Zifnab » Tue Nov 01, 2011 3:44 pm

fripp wrote:
naermataron wrote: ευχάριστώ πολύ κατάλαβα :-) θα ψάξω και εγώ να το βρώ το acm για 64bit στο google ,
Δοκίμασε να μεταγλωττίσεις & εκτελέσεις το εξής πρόγραμμα:

Code: Select all

import acm.program.*;

public class test extends Program {
      public void run() {
             println("Hello world!!!");
      }

      public static void main(String[] args) {
             new test().start(args);
      }
}
Με αυτό τον τρόπο μπορείς να χρησιμοποιείς τις συναρτήσεις του πακέτου acm.jar, π.χ., readInt(), στην περίπτωση που η run() μόνη της αποτυγχάνει.
Το έκανε αυτό - αλλά το πρόβλημα είναι ότι το acm.jar που είναι του ~2006 (dead project?) είναι compiled για 32-bit μηχανήματα και του σκάει στο run επειδή έχει 64-bit μηχάνημα / JVM .. δεν βρήκα sources ή τουλάχιστον έκδοση για 64-bit... φαντάζομαι ότι δεν υπάρχει εύκολη λύση για τους φίλους με 64μπιτα..
User avatar
netharis
Venus Former Team Member
Posts: 1845
Joined: Sun Jul 15, 2007 2:37 pm
Academic status: Alumnus/a
Gender:
Location: Seattle, Washington
Contact:

Re: Νέος - απορία στην java

Post by netharis » Tue Nov 01, 2011 4:22 pm

Zifnab wrote:
fripp wrote:
naermataron wrote: ευχάριστώ πολύ κατάλαβα :-) θα ψάξω και εγώ να το βρώ το acm για 64bit στο google ,
Δοκίμασε να μεταγλωττίσεις & εκτελέσεις το εξής πρόγραμμα:

Code: Select all

import acm.program.*;

public class test extends Program {
      public void run() {
             println("Hello world!!!");
      }

      public static void main(String[] args) {
             new test().start(args);
      }
}
Με αυτό τον τρόπο μπορείς να χρησιμοποιείς τις συναρτήσεις του πακέτου acm.jar, π.χ., readInt(), στην περίπτωση που η run() μόνη της αποτυγχάνει.
Το έκανε αυτό - αλλά το πρόβλημα είναι ότι το acm.jar που είναι του ~2006 (dead project?) είναι compiled για 32-bit μηχανήματα και του σκάει στο run επειδή έχει 64-bit μηχάνημα / JVM .. δεν βρήκα sources ή τουλάχιστον έκδοση για 64-bit... φαντάζομαι ότι δεν υπάρχει εύκολη λύση για τους φίλους με 64μπιτα..

Wait a minute...
Το οτι έχεις 32bit jar δεν σημαίνει οτι δεν μπορεί να τρέξει σε 64bit σύστημα.
Όλη η ιδέα πίσω απο αυτό είναι οτι η Java παράγει bytecode == 1 byte/slot. Για να κάνεις force τη jvm να παίξει για 32bit απλά πέρνα τη παράμετρο -d32 στο java.

Αυτό αλλάζει στη περίπτωση που το library/whatever χρησιμοποιεί native κώδικα - με JNI.
Image
Resistance is futile. Join the foss-side now!
"UNIX is very simple, it just needs a genius to understand its simplicity." - Dennis Ritchie
"The things that I want, by Max Payne. A smoke. A whiskey. For the sun to shine. I want to sleep, to forget. To change the past. Unlimited ammo and a license to kill. But right then, more than anything, I wanted her."
User avatar
Zifnab
Venus Former Team Member
Posts: 7581
Joined: Tue Nov 15, 2005 2:42 am
Academic status: MSc
Gender:
Location: Connecticut
Contact:

Re: Νέος - απορία στην java

Post by Zifnab » Tue Nov 01, 2011 4:47 pm

netharis wrote:

Wait a minute...
Το οτι έχεις 32bit jar δεν σημαίνει οτι δεν μπορεί να τρέξει σε 64bit σύστημα.
Όλη η ιδέα πίσω απο αυτό είναι οτι η Java παράγει bytecode == 1 byte/slot. Για να κάνεις force τη jvm να παίξει για 32bit απλά πέρνα τη παράμετρο -d32 στο java.

Αυτό αλλάζει στη περίπτωση που το library/whatever χρησιμοποιεί native κώδικα - με JNI.
nice tip! δεν ήξερα ότι υπήρχε τέτοια δυνατότητα..
netharis έκανα extract το jar και είναι όλα .class αρχεία μέσα - οπότε φαντάζομαι αν ήταν κάτι native θα είχε dlls για win right?
User avatar
netharis
Venus Former Team Member
Posts: 1845
Joined: Sun Jul 15, 2007 2:37 pm
Academic status: Alumnus/a
Gender:
Location: Seattle, Washington
Contact:

Re: Νέος - απορία στην java

Post by netharis » Tue Nov 01, 2011 5:12 pm

Zifnab wrote:
netharis wrote:

Wait a minute...
Το οτι έχεις 32bit jar δεν σημαίνει οτι δεν μπορεί να τρέξει σε 64bit σύστημα.
Όλη η ιδέα πίσω απο αυτό είναι οτι η Java παράγει bytecode == 1 byte/slot. Για να κάνεις force τη jvm να παίξει για 32bit απλά πέρνα τη παράμετρο -d32 στο java.

Αυτό αλλάζει στη περίπτωση που το library/whatever χρησιμοποιεί native κώδικα - με JNI.
nice tip! δεν ήξερα ότι υπήρχε τέτοια δυνατότητα..
netharis έκανα extract το jar και είναι όλα .class αρχεία μέσα - οπότε φαντάζομαι αν ήταν κάτι native θα είχε dlls για win right?
Όχι αναγκαστικά... Ενδέχεται να καλεί κάποιο system dll/library.
Image
Resistance is futile. Join the foss-side now!
"UNIX is very simple, it just needs a genius to understand its simplicity." - Dennis Ritchie
"The things that I want, by Max Payne. A smoke. A whiskey. For the sun to shine. I want to sleep, to forget. To change the past. Unlimited ammo and a license to kill. But right then, more than anything, I wanted her."
User avatar
Zifnab
Venus Former Team Member
Posts: 7581
Joined: Tue Nov 15, 2005 2:42 am
Academic status: MSc
Gender:
Location: Connecticut
Contact:

Re: Νέος - απορία στην java

Post by Zifnab » Tue Nov 01, 2011 5:18 pm

Οκ σωστά :-) . άρα με βάση το screenshot που δίνει φαίνεται να καλεί κάποιο dll μέσα από class του jar ή είναι ιδέα μου?
naermataron wrote:όταν γράφω " java -cp .;acm.jar test " στο cmd για να εκτελέσω το πρόγραμμα μου βγάζει αυτό το error :

Link: http://img713.imageshack.us/img713/5464/005rut.png



(Σημείωση: έχω γράψει την εντολή προηγουμένως " javac -cp .;acm.jar test.java " και έχω κανει compile το αρχείο test.java σε test.class όπως φαινεται στην πάνω εικόνα)
User avatar
netharis
Venus Former Team Member
Posts: 1845
Joined: Sun Jul 15, 2007 2:37 pm
Academic status: Alumnus/a
Gender:
Location: Seattle, Washington
Contact:

Re: Νέος - απορία στην java

Post by netharis » Tue Nov 01, 2011 5:30 pm

Zifnab wrote:Οκ σωστά :-) . άρα με βάση το screenshot που δίνει φαίνεται να καλεί κάποιο dll μέσα από class του jar ή είναι ιδέα μου?
naermataron wrote:όταν γράφω " java -cp .;acm.jar test " στο cmd για να εκτελέσω το πρόγραμμα μου βγάζει αυτό το error :

Link: http://img713.imageshack.us/img713/5464/005rut.png



(Σημείωση: έχω γράψει την εντολή προηγουμένως " javac -cp .;acm.jar test.java " και έχω κανει compile το αρχείο test.java σε test.class όπως φαινεται στην πάνω εικόνα)

Ναι καλεί ένα external DLL (reasons unknown though. ). Λογικά η JVM εαν αρχίσει σε 32bit θα μπορέσει να το κάνει accommodate.
Image
Resistance is futile. Join the foss-side now!
"UNIX is very simple, it just needs a genius to understand its simplicity." - Dennis Ritchie
"The things that I want, by Max Payne. A smoke. A whiskey. For the sun to shine. I want to sleep, to forget. To change the past. Unlimited ammo and a license to kill. But right then, more than anything, I wanted her."
fripp
bit level
bit level
Posts: 40
Joined: Fri Nov 12, 2010 1:03 pm
Academic status: Professor
Gender:

Re: Νέος - απορία στην java

Post by fripp » Tue Nov 01, 2011 5:33 pm

Zifnab wrote:
fripp wrote:
naermataron wrote: ευχάριστώ πολύ κατάλαβα :-) θα ψάξω και εγώ να το βρώ το acm για 64bit στο google ,
Δοκίμασε να μεταγλωττίσεις & εκτελέσεις το εξής πρόγραμμα:

Code: Select all

import acm.program.*;

public class test extends Program {
      public void run() {
             println("Hello world!!!");
      }

      public static void main(String[] args) {
             new test().start(args);
      }
}
Με αυτό τον τρόπο μπορείς να χρησιμοποιείς τις συναρτήσεις του πακέτου acm.jar, π.χ., readInt(), στην περίπτωση που η run() μόνη της αποτυγχάνει.
Το έκανε αυτό - αλλά το πρόβλημα είναι ότι το acm.jar που είναι του ~2006 (dead project?) είναι compiled για 32-bit μηχανήματα και του σκάει στο run επειδή έχει 64-bit μηχάνημα / JVM .. δεν βρήκα sources ή τουλάχιστον έκδοση για 64-bit... φαντάζομαι ότι δεν υπάρχει εύκολη λύση για τους φίλους με 64μπιτα..
Χμμμ...ναι το native dll θα φταίει. Όμως (πιστεύω) εάν χρησιμοποιηθεί *και* η main, όπως στον κώδικα από πάνω, τότε θα πρέπει να τρέξει κανονικά γιατί η Program.start (και ό,τι χρησιμοποιεί αυτή) νομίζω ότι δεν είναι native. Εάν αυτό δε δουλέψει, τότε η αντικατάσταση με new test().run() ίσως κάνει δουλειά.

Μπορεί κάποιος με 64-bit σύστημα να το δοκιμάσει;
User avatar
netharis
Venus Former Team Member
Posts: 1845
Joined: Sun Jul 15, 2007 2:37 pm
Academic status: Alumnus/a
Gender:
Location: Seattle, Washington
Contact:

Re: Νέος - απορία στην java

Post by netharis » Tue Nov 01, 2011 5:58 pm

fripp wrote: Χμμμ...ναι το native dll θα φταίει. Όμως (πιστεύω) εάν χρησιμοποιηθεί *και* η main, όπως στον κώδικα από πάνω, τότε θα πρέπει να τρέξει κανονικά γιατί η Program.start (και ό,τι χρησιμοποιεί αυτή) νομίζω ότι δεν είναι native. Εάν αυτό δε δουλέψει, τότε η αντικατάσταση με new test().run() ίσως κάνει δουλειά.

Μπορεί κάποιος με 64-bit σύστημα να το δοκιμάσει;
H Program δεν ανήκει σε κάποιο standard packet της Java. Το πρόβλημα είναι ότι το συγκεκριμένο library χρησιμοποεί DLL για 32bit μέσω JNI. Εικάζω πως χρησιμοποιεί JNI call μέσα στη Program.

H JVM θα μπορέσει λογικά να το τρέξει, εαν γίνει set για 32bit. Eαν όχι, μπορεί πάντα να χρησιμοποιήσει το WOW64 για να τρέξει 32bit JVM from scratch.
To πρόβλημα είναι οτι η JVM όταν τρέχει σε 64bit σύστημα, απαγορεύει τη χρήση libs που έχουνε γίνει compile σε 32bit.
Image
Resistance is futile. Join the foss-side now!
"UNIX is very simple, it just needs a genius to understand its simplicity." - Dennis Ritchie
"The things that I want, by Max Payne. A smoke. A whiskey. For the sun to shine. I want to sleep, to forget. To change the past. Unlimited ammo and a license to kill. But right then, more than anything, I wanted her."
User avatar
naermataron
bit level
bit level
Posts: 40
Joined: Thu Oct 27, 2011 12:57 pm
Academic status: N>4
Gender:

Re: Νέος - απορία στην java

Post by naermataron » Wed Nov 02, 2011 12:11 pm

fripp wrote:Δοκίμασε να μεταγλωττίσεις & εκτελέσεις το εξής πρόγραμμα:

Code: Select all

import acm.program.*;

public class test extends Program {
      public void run() {
             println("Hello world!!!");
      }

      public static void main(String[] args) {
             new test().start(args);
      }
}
Με αυτό τον τρόπο μπορείς να χρησιμοποιείς τις συναρτήσεις του πακέτου acm.jar, π.χ., readInt(), στην περίπτωση που η run() μόνη της αποτυγχάνει.
Μόλις το έκανα και λειτούργησε μια χαρά (σε 64-bit windows 7)
---

άρα όσοι έχουν 64 bit αυτό εδώ να χρησιμοποιούν

Code: Select all

import acm.program.*;

public class test extends Program {
      public void run() {
             println("Hello world!!!");
      }

      public static void main(String[] args) {
             new test().start(args);
      }
}
Last edited by enum21 on Wed Nov 02, 2011 12:16 pm, edited 1 time in total.
Reason: posts merged
fripp
bit level
bit level
Posts: 40
Joined: Fri Nov 12, 2010 1:03 pm
Academic status: Professor
Gender:

Re: Νέος - απορία στην java

Post by fripp » Wed Nov 02, 2011 12:47 pm

naermataron wrote: Μόλις το έκανα και λειτούργησε μια χαρά (σε 64-bit windows 7)
---
άρα όσοι έχουν 64 bit αυτό εδώ να χρησιμοποιούν
Τέλεια! ευχαριστώ για το πείραμα.
Τώρα (κάποιος με 64bit windows/JDK) μπορεί να δοκιμάσει εάν τρέχει το ίδιο πρόγραμμα *χωρίς* τη main, αλλά χρησιμοποιώντας αυτό εδώ το acm.jar;
User avatar
naermataron
bit level
bit level
Posts: 40
Joined: Thu Oct 27, 2011 12:57 pm
Academic status: N>4
Gender:

Re: Νέος - απορία στην java

Post by naermataron » Wed Nov 02, 2011 1:02 pm

Με αυτό εδώ acm.jar και

Code: Select all

import acm.program.*;

public class test extends Program {
      public void run() {
             println("Hello world!!!");
      }
     
}
λειτουργει κανονικά στα 64-bit windows τέλεια :-)
fripp
bit level
bit level
Posts: 40
Joined: Fri Nov 12, 2010 1:03 pm
Academic status: Professor
Gender:

Re: Νέος - απορία στην java

Post by fripp » Wed Nov 02, 2011 1:09 pm

ευχαριστώ!
User avatar
Zifnab
Venus Former Team Member
Posts: 7581
Joined: Tue Nov 15, 2005 2:42 am
Academic status: MSc
Gender:
Location: Connecticut
Contact:

Re: Νέος - απορία στην java

Post by Zifnab » Wed Nov 02, 2011 2:42 pm

naermataron wrote:Με αυτό εδώ acm.jar και

Code: Select all

import acm.program.*;

public class test extends Program {
      public void run() {
             println("Hello world!!!");
      }
     
}
λειτουργει κανονικά στα 64-bit windows τέλεια :-)
τί άλλαξε και λειτουργεί? έτρεξες την jvm σε 32bit?? ή βρήκες jar διαφορετικό?
fripp
bit level
bit level
Posts: 40
Joined: Fri Nov 12, 2010 1:03 pm
Academic status: Professor
Gender:

Re: Νέος - απορία στην java

Post by fripp » Thu Nov 03, 2011 1:42 am

Zifnab wrote:
τί άλλαξε και λειτουργεί? έτρεξες την jvm σε 32bit?? ή βρήκες jar διαφορετικό?
Ανανεωμένο jar από software που μοιράστηκε στο φετινό java μάθημα του stanford.
User avatar
Zifnab
Venus Former Team Member
Posts: 7581
Joined: Tue Nov 15, 2005 2:42 am
Academic status: MSc
Gender:
Location: Connecticut
Contact:

Re: Νέος - απορία στην java

Post by Zifnab » Thu Nov 03, 2011 2:53 pm

fripp wrote:
Zifnab wrote:
τί άλλαξε και λειτουργεί? έτρεξες την jvm σε 32bit?? ή βρήκες jar διαφορετικό?
Ανανεωμένο jar από software που μοιράστηκε στο φετινό java μάθημα του stanford.
Τέλεια :)
Post Reply

Return to “Προγραμματισμός”