J'ai écrit une petite application web interne que j'utilise pour importer des factures de notre base de données de jobcard dans MYOB. Je l'ai écrit en utilisant Clojure et Compojure, et ça fonctionne plutôt bien, et c'était aussi un bon exercice d'apprentissage pour moi.MYOB ODBC Pilote changeant le répertoire de travail en temp en utilisant Compojure
Cependant, j'ai un problème, il semble qu'après une importation de facture réussie, le serveur jetée ne servira plus le fichier CSS statique.
Le DEFROUTE est comme suit: (. Le fichier est juste css/default.css, il fonctionne parfaitement juste avant la première importation)
(defroutes static-routes
(GET ["/:filename" :filename #".*"] [filename]
(response/file-response filename {:root "public"})))
Maintenant, je pense que j'ai trouvé la problème, il semble que le pilote ODBC MYOB est en train de changer le répertoire de travail du serveur Jetty (et mon REPL), parce que quand j'entre ce qui suit dans le REPL:
(file-seq (File. "."))
je reçois une liste de mon Répertoire des fichiers temporaires, ce qui expliquerait pourquoi mon fichier CSS n'est plus trouvé.
La chose étrange est, si je fais:
(.getAbsolutePath (File. "."))
je reçois le bon répertoire de ma demande.
Est-ce que quelqu'un sait quelque chose (autre que le codage dans un chemin absolu) qui peut contourner cette bizarrerie du pilote MYOB ODBC?
Je suppose que je pourrais juste saisir et stocker le chemin absolu quand je démarre, mais cela fonctionnerait-il avec un uberjar?
Éditer: Il semble qu'il est impossible de corriger en raison des limitations de la JVM?
How do I change directory in command line with Clojure?
La chose étrange est en effet étrange. les appels file-seq (.d (listFiles)). Si vous appelez (. (File. ".") ListFiles) quel répertoire avez-vous? –
Je reçois la liste du répertoire temporaire. (seq. (Fichier. ".) (listFiles))). Cependant, il dit toujours que absolutePath est le répertoire correct, donc je ne sais pas ce qui se passe là-bas ... – Mike