Λοιπόν παιδιά καλησπέρα σας. Στα πλαίσια ενός εργαστηριακού μαθήματος μου, πρέπει να στήσω ένα servlet που θα παίζει στον apache-tomcat.
Έχω εγκαταστήσει την java-tomca-ant μέσω του package manager της διανομής μου.(Arch Linux-pacman).
Πάω για παράδειγμα και φτιάχνω ένα παράδειγμα για να δω αν όλα λειτουργούν κανονικά αλλά παίρνω το εξής σφάλμα.
Είμαι στο ~/test/
Δίνω ant install
To αρχείο build.properties είναι εντάξει.Κώδικας:Buildfile: build.xml Trying to override old definition of datatype resources BUILD FAILED /home/giorgos/hello/build.xml:207: taskdef class org.apache.jasper.JspC cannot be found Total time: 0 seconds
Αν δώσω ant -v
Τα path πιστεύω πως είναι σωστά.Κώδικας:Apache Ant version 1.7.0 compiled on April 2 2007 Buildfile: build.xml Detected Java version: 1.6 in: /opt/java/jre Detected OS: Linux parsing buildfile /home/giorgos/hello/build.xml with URI = file:/home/giorgos/hello/build.xml Project base dir set to: /home/giorgos/hello [antlib:org.apache.tools.ant] Could not load definitions from resource org/apache/tools/ant/antlib.xml. It could not be found. [property] Loading /home/giorgos/hello/build.properties [property] Loading /home/giorgos/build.properties [property] Unable to find property file: /home/giorgos/build.properties Override ignored for property "app.path" Override ignored for property "catalina.home" Trying to override old definition of datatype resources BUILD FAILED /home/giorgos/hello/build.xml:207: taskdef class org.apache.jasper.JspC cannot be found at org.apache.tools.ant.taskdefs.Definer.addDefinition(Definer.java:609) at org.apache.tools.ant.taskdefs.Definer.loadProperties(Definer.java:412) at org.apache.tools.ant.taskdefs.Definer.execute(Definer.java:268) at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:105) at org.apache.tools.ant.Task.perform(Task.java:348) at org.apache.tools.ant.Target.execute(Target.java:357) at org.apache.tools.ant.helper.ProjectHelper2.parse(ProjectHelper2.java:140) at org.apache.tools.ant.ProjectHelper.configureProject(ProjectHelper.java:96) at org.apache.tools.ant.Main.runBuild(Main.java:683) at org.apache.tools.ant.Main.startAnt(Main.java:199) at org.apache.tools.ant.launch.Launcher.run(Launcher.java:257) at org.apache.tools.ant.launch.Launcher.main(Launcher.java:104) Caused by: java.lang.ClassNotFoundException: org.apache.jasper.JspC at org.apache.tools.ant.AntClassLoader.findClassInComponents(AntClassLoader.java:1383) at org.apache.tools.ant.AntClassLoader.findClass(AntClassLoader.java:1324) at org.apache.tools.ant.AntClassLoader.loadClass(AntClassLoader.java:1072) at java.lang.ClassLoader.loadClass(ClassLoader.java:251) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:247) at org.apache.tools.ant.taskdefs.Definer.addDefinition(Definer.java:583) ... 16 more --- Nested Exception --- java.lang.ClassNotFoundException: org.apache.jasper.JspC at org.apache.tools.ant.AntClassLoader.findClassInComponents(AntClassLoader.java:1383) at org.apache.tools.ant.AntClassLoader.findClass(AntClassLoader.java:1324) at org.apache.tools.ant.AntClassLoader.loadClass(AntClassLoader.java:1072) at java.lang.ClassLoader.loadClass(ClassLoader.java:251) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:247) at org.apache.tools.ant.taskdefs.Definer.addDefinition(Definer.java:583) at org.apache.tools.ant.taskdefs.Definer.loadProperties(Definer.java:412) at org.apache.tools.ant.taskdefs.Definer.execute(Definer.java:268) at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:105) at org.apache.tools.ant.Task.perform(Task.java:348) at org.apache.tools.ant.Target.execute(Target.java:357) at org.apache.tools.ant.helper.ProjectHelper2.parse(ProjectHelper2.java:140) at org.apache.tools.ant.ProjectHelper.configureProject(ProjectHelper.java:96) at org.apache.tools.ant.Main.runBuild(Main.java:683) at org.apache.tools.ant.Main.startAnt(Main.java:199) at org.apache.tools.ant.launch.Launcher.run(Launcher.java:257) at org.apache.tools.ant.launch.Launcher.main(Launcher.java:104) Total time: 0 seconds
echo $PATH
Επίσης δεν βρίσκω κάποιον φάκελο που να έχει κάποιες ρυθμίσεις ή κάποιοΚώδικας:/bin:/usr/bin:/sbin:/usr/sbin:/usr/X11R6/bin:/opt/bin:/opt/java/bin:/opt/java/jre/bin:/opt/kde/bin:/opt/mozilla/bin:/opt/qt/bin
.conf αρχείο για το ant, παρά μόνο το /usr/bin/ant
H βοήθεια σας είναι πολύτιμη, γιατι ο χρόνος μου είναι περιορισμένος μέχρι να παραδώσω την άσκηση! Ευχαριστώ πολύ όλους!
Εμφάνιση 1-11 από 11
Θέμα: help_with_apache-ant
-
21-01-08, 17:31 help_with_apache-ant #1
-
21-01-08, 18:25 Απάντηση: help_with_apache-ant #2
Δε βρίσκει την κλάση του JSP compiler:
Κώδικας:java.lang.ClassNotFoundException: org.apache.jasper.JspC
Από την τεκμηρίωση τώρα του Ant task <jspc> είδα:
By default the task uses the Jasper JSP compiler. This means the task needs jasper.jar and jasper-runtime.jar, which come with builds of Tomcat 4/Catalina from the Jakarta Tomcat project, and any other Jar files which may be needed in future versions (it changes) We recommend (in March 2003) Tomcat version 4.1.x for the most robust version of Jasper.
Deprecated if you use this task with Tomcat's Jasper JSP compiler, you should seriously consider using the task shipping with Tomcat instead. This task is only tested against Tomcat 4.x. There are known problems with Tomcat 5.x that won't get fixed in Ant, please use Tomcat's jspc task instead.
Καλή επιτυχία!
-
21-01-08, 22:09 Απάντηση: help_with_apache-ant #3
Το πρόβλημα μου είναι πως δεν μπορώ που είναι αυτό το ΑΝΤ_ΗΟΜΕ.
Αν και έχω εγκατεστημένο το ant, δεν μπορώ να βρω κάποιον φάκελο που να έχει σχέση με το ant, παρά μόνο το αρχείο /usr/bin/ant
Λίγο πιο αναλυτικά να μπορούσες να μου τα εξηγήσεις γιατί έχω χαθεί.
-
22-01-08, 01:05 Απάντηση: help_with_apache-ant #4
OK, μην ανησυχείς!
Καταρχάς γνωρίζεις ελπίζω ότι το classpath στη Java είναι το σύνολο των τοποθεσιών, τις οποίες ψάχνει η Java Virtual Machine για να βρεί τα .class αρχεία που χρειάζεται το πρόγραμμά σου. Το classpath είναι κατάλογοι με αρχεία .class καθώς και αρχεία .jar (=zip στην ουσία, αλλά με άλλη κατάληξη) που περιέχουν αρχεία .class. Η μεταβλητή περιβάλλοντος CLASSPATH χρησιμοποιείται για να ορίσει, πλήρως ή εν μέρει το classpath.
Στη μεταβλητή αυτή θα πρέπει να προσθέσεις τα δύο jar που αναφέρουν οι οδηγίες του Ant. Εφόσον είσαι σε Linux (ωραία!) θα κάνεις κάτι τέτοιο:
Κώδικας:export CLASSPATH=$CLASSPATH:/path/to/jasper.jar:/path/to/jasper-runtime.jar
Έπειτα ξαναδοκίμασε να τρέξεις το ant και πές μας. Προσοχή να το τρέξεις στην ίδια κονσόλα που έδωσες το "export CLASSPATH=...".
-
22-01-08, 05:39 Απάντηση: help_with_apache-ant #5Αρχικό μήνυμα από nikospara
Κώδικας:ls -l jasper*.jar -rw-r--r-- 1 root root 408133 2008-01-11 19:55 jasper-compiler.jar -rw-r--r-- 1 root root 1213732 2008-01-11 19:55 jasper-compiler-jdt.jar -rw-r--r-- 1 root root 76844 2008-01-11 19:55 jasper-runtime.jar
Κώδικας:export CLASSPATH=$CLASSPATH:/opt/tomcat/common/lib/jasper-compiler.jar:/opt/tomcat/common/lib/jasper-compiler-jdt.jar:/opt/tomcat/common/lib/jasper-runtime.jar
Κώδικας:$ant all /home/giorgos/questionnaire/build.xml:146: taskdef class org.apache.catalina.ant.DeployTask cannot be found Total time: 0 seconds
χαρακτηριστικά μέσα στο αρχείο λέει ένα σημείο
Κώδικας:<!-- ================== Custom Ant Task Definitions ======================= --> <!-- These properties define custom tasks for the Ant build tool that interact with the "/manager" web application installed with Tomcat 6. Before they can be successfully utilized, you must perform the following steps: - Copy the file "lib/catalina-ant.jar" from your Tomcat 6 installation into the "lib" directory of your Ant installation. - Create a "build.properties" file in your application's top-level source directory (or your user login home directory) that defines appropriate values for the "manager.password", "manager.url", and "manager.username" properties described above. For more information about the Manager web application, and the functionality of these tasks, see <http://localhost:8080/tomcat-docs/manager-howto.html>. --> <taskdef resource="org/apache/catalina/ant/catalina.tasks" classpathref="compile.classpath"/>
........Auto merged post: gkimonas added 2 Minutes and 24 Seconds later........
Επίσης διαβάζω για το apache-ant directory, έχω φάει όλο το / folder-tree αλλά αυτόν τον φάκελο δεν τον βρίσκω με τίποτα.Τελευταία επεξεργασία από το μέλος gkimonas : 22-01-08 στις 05:39. Αιτία: auto merged post
-
22-01-08, 11:24 Απάντηση: help_with_apache-ant #6
Δοκίμασε locate ant (αν το τρέχεις 1η φορά θες ένα sudo updatedb πρώτα)
Από κει δες τι θα σου βγάλει να βρεις το ant.Heh, screw you guys... I'm going home!
-
22-01-08, 11:50 Απάντηση: help_with_apache-ant #7
Ωραία! Προχωρήσαμε! Δηλαδή πλέον βρίσκει τον JspC, αλλά κολλάει παρακάτω. (Ένα σχήμα που θα πρέπει να συνηθίσεις εφόσον ασχοληθείς με προγραμματισμό... ή ό,τι άλλο τεχνικό.) Επί της ουσίας τώρα:
Όπως πολύ σωστά ξέθαψες από τις οδηγίες του build.xml σου, πρέπει να βάλεις στο classpath το catalina-ant.jar. (Όταν σου λέει να το αντιγράψεις στο <ANT_HOME>/lib αυτό εννοεί.)
Καταρχάς κάνε αυτό που λέει ο dvm. Δοκίμασε ίσως και "locate catalina-ant.jar". Από το αποτέλεσμα ίσως πληροφορηθείς που βρίσκεται το αρχείο. [Με μια γρήγορη αναζήτηση από τα πακέτα του Arch: /opt/tomcat/server/lib/catalina-ant.jar]
Το catalina-ant.jar είτε το αντιγράφεις, όπως λέει [μάλλον στο /usr/lib, αφού με "μια γρήγορη αναζήτηση" είδα ότι το ant εγκαθίσταται στο /usr, το οποίο είναι και το ANT_HOME], ή το κοτσάρεις και αυτό στο προηγούμενο CLASSPATH. Και επειδή βλέπω το CLASSPATH να γίνεται ο υπερσηβηρικός, δοκίμασε πρώτα να αντιγράψεις όλα αυτά τα jar (jasper* και catalina-ant) στο /usr/lib.
Και μία σκέψη: Για tomcat, ant κλπ δε χρησιμοποιώ τα πακέτα της διανομής μου, αλλά κατεβάζω τα τελευταία από internet. Έτσι όχι μόνο έχω τις τελευταίες εκδόσεις, χωρίς να περιμένω πότε θα γίνουν πακέτα, αλλά ορίζω εγώ ακριβώς τα ANT_HOME, TOMCAT_HOME, CATALINA_HOME κλπ.
-
22-01-08, 19:55 Απάντηση: help_with_apache-ant #8
Κι επίσης βασικό πλεονέκτημα του ant είναι ότι κάθε project έχει το δικό του classpath. Στον υπολογιστή το classpath μου είναι .
Κάθε project έχει το δικό του classpath μέσα στο build.xml.
πχ.
Κώδικας:build.properties: lucene.jar=C:\\Program Files\\Java\\lucene-2.2.0\\lib\\lucene-core-2.2.0.jar tidy.jar=C:\\Program Files\\Java\\jtidy\\lib\\Tidy.jar build.xml: .... <path id="compile.classpath"> <pathelement location="${lucene.jar}" /> <pathelement location="${tidy.jar}" /> </path> <path id="test.classpath"> <path refid="compile.classpath" /> <pathelement location="${junit.jar}" /> <pathelement location="${build.dir}/classes" /> <pathelement location="${build.dir}/test" /> </path> .... <target name="compile" depends="init" description="Compile the source code"> <javac srcdir="${src.dir}" destdir="${build.dir}/classes" classpathref="compile.classpath" /> </target>
Τελευταία επεξεργασία από το μέλος dvm : 22-01-08 στις 19:56.
Heh, screw you guys... I'm going home!
-
23-01-08, 18:25 Απάντηση: help_with_apache-ant #9
Λοιπόν για να λύσω τα προβλήματα μου έβγαλα και τον tomcat και το ant μέσω του pacman.
Κατέβασα τα .tar.gz του tomcat κ ant στον προσωπικό μου φάκελο.
Όλα καλά αλλά έχω δώσει τα ΑΝΤ_ΗΟΜΕ και CATALINA_HOME στο ~/.bash_profile με αποτέλεσμα πρέπει να δίνω κάθε φορά source ~/.bash_profile
Μήπως θα έπρεπε να πάω στο /etc/profile.d/ και εκεί να φτιάξω ένα ant.sh
και ένα tomcat.sh όπου θα κάνω chmod ώστε να μπορώ και ώς χρήστης να τα εκτελώ και να τοποθετήσω μέσα τις μεταβλητές.
Κάποιος φίλος που έχει arch και ξέρει θα τον παρακαλούσα.
Ευχαριστώ
-
23-01-08, 19:02 Απάντηση: help_with_apache-ant #10Μήπως θα έπρεπε να πάω στο /etc/profile.d/ και εκεί να φτιάξω ένα ant.sh
και ένα tomcat.sh όπου θα κάνω chmod ώστε να μπορώ και ώς χρήστης να τα εκτελώ και να τοποθετήσω μέσα τις μεταβλητές.
Ωστόσο από πλευράς συνέπειας, θα έπρεπε τα δύο προγράμματα να είναι εγκατεστημένα σε κοινόχρηστο φάκελο (πχ /opt). Αν θές να είναι στον προσωπικό σου χώρο, καλύτερα να θέτεις τις μεταβλητές αυτές στο κατάλληλο αρχείο bash initialization file (~/.bashrc, ~/.bash_profile, πάντα τα μπερδεύω τα ρημάδια! ).
-
23-01-08, 19:25 Απάντηση: help_with_apache-ant #11Αρχικό μήνυμα από nikospara
Σε ευχαριστώ πολύ για όλα πάντως.
Παρόμοια Θέματα
-
Επιλογή java compiler στο ant
Από dvm στο φόρουμ Προγραμματισμός και γλώσσες προγραμματισμούΜηνύματα: 2Τελευταίο Μήνυμα: 09-10-07, 16:06 -
Exclude directory στο ant
Από dvm στο φόρουμ Προγραμματισμός και γλώσσες προγραμματισμούΜηνύματα: 1Τελευταίο Μήνυμα: 10-08-07, 19:06
Bookmarks