Groovlet + Tomcat: «δεν μπορεί να επιλύσει την κατηγορία» κατά την εισαγωγή βιβλιοθήκες

ψήφοι
1

Αντιμετωπίζω κάποιο πρόβλημα τρέχει ένα groovy servlet (groovlet) σε γάτος που εισάγει μια τάξη βιβλιοθήκη. Όταν δεν εισάγουν κάτι το groovlet λειτουργεί σωστά, αλλά αν δεν εισάγει κάτι που περιμένω να είναι στο classpath (Ι μπορούν να εισάγουν την ίδια κατηγορία με επιτυχία σε ένα κανονικό servlet), θα δείτε το παρακάτω μήνυμα:

groovy.util.ScriptException: Could not parse scriptName: /MyGroovlet.groovy
java.lang.RuntimeException: groovy.util.ScriptException: Could not parse scriptName: /MyGroovlet.groovy
    at groovy.servlet.GroovyServlet$1.call(GroovyServlet.java:123)
...
Caused by: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed, /MyGroovlet.groovy: 1: unable to resolve class com.mycompany.mypackage.MyLibraryClass
 @ line 1, column 1.

Το βάζο που περιέχει MyLibraryClassείναι στο shared/lib, το οποίο φορτώνεται από tomcat από το ακόλουθο κείμενο στο catalina.properties:

shared.loader=...,${catalina.base}/shared/lib/*.jar,...

Οι groovlets μου χαρτογραφούνται όπως περιγράφεται στο εγχειρίδιο στην αίτησή μου είναι web.xml:

<servlet>
    <servlet-name>GroovyServlet</servlet-name>
    <servlet-class>groovy.servlet.GroovyServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>GroovyServlet</servlet-name>
    <url-pattern>*.groovy</url-pattern>
</servlet-mapping>

Και εδώ είναι ο κωδικός για τη groovlet, MyGroovlet.groovy:

import com.mycompany.mypackage.MyLibraryClass
MyLibraryClass.someStaticMethod()

Groovlet μου έχει αναπτυχθεί με WEB-INF/groovy/MyGroovlet.groovy, σύμφωνα με το API GroovyServlet .

Όταν επισκέπτομαι http://localhost:8080/myapplication/MyGroovlet.groovy, το σφάλμα που περιγράφηκε προηγουμένως είναι γραμμένο σε αρχεία καταγραφής αίτησή μου.

Υπάρχει κάποιος τρόπος που θα πρέπει να δηλώσουν ρητά το classpath εκτέλεσης για GroovyServlet εκεί; Έχω δοκιμάσει τη μετακίνηση του βάζου βιβλιοθήκη σε διάφορα μέρη, συμπεριλαμβανομένου WEB-INF/libκαι μετακινώντας το πραγματικό MyLibraryClass.classαρχείο σε WEB-INF/classes, αλλά χωρίς τύχη.

Δημοσιεύθηκε 10/12/2008 στις 00:00
πηγή χρήστη
Σε άλλες γλώσσες...                            


2 απαντήσεις

ψήφοι
1

Είμαι χρησιμοποιώντας Groovy plugin για Eclipse. Εξαγωγή Groovlets σε ένα αρχείο πόλεμο δεν λειτουργούν επίσης.

Όταν κάνω εξαγωγή αίτησή μου Groovlet με βάση, αυτό το χρήσιμο plugin βάζει .groovy αρχεία στον κατάλογο / WEB-INF / τάξεις (στο classpath). Και λειτουργεί όταν αναπτύξετε το αρχείο πόλεμος στο μου Tomcat Server.

Ελπίζω ότι αυτό βοηθά.

Χαιρετισμοί.

Απαντήθηκε 25/02/2009 στις 02:50
πηγή χρήστη

ψήφοι
0

Ένα ηλίθιο λάθος που έκανα ήταν ότι έπρεπε να φορτώσετε εκ νέου το webapp πριν από το βάζο που αντιγράφονται σε WEB-INF / lib θα φορτωθεί (δηλαδή είτε την επανεκκίνηση σύνολο του server Tomcat, ή να φορτώσετε εκ νέου μόνο το συγκεκριμένο app από το διαχειριστή Tomcat). Δυναμική επεξεργασία των .groovy αρχεία σωστά στο εσωτερικό του Tomcat / webapps / dir και να δει τις ενημερώσεις για τις αμέσως μου εφησυχάζουμε στην αίσθηση ότι όλα θα είναι αυτόματη φορτωμένο, αλλά όχι τόσο με βάζα. Ήταν εξωφρενικός μέχρι που συνειδητοποίησε τι συνέβαινε.

Απαντήθηκε 30/04/2010 στις 06:34
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more