ジョブカード データベースから MYOB に請求書をインポートするために使用する小さな内部 Web アプリケーションを作成しました。私は Clojure と Compojure を使用してこれを作成しましたが、実際にはかなりうまく機能し、私にとっては良い学習課題でもありました。
しかし、問題が発生しました。請求書のインポートが成功した後、jetty サーバーが静的 CSS ファイルを提供しなくなったようです。
デルートは次のとおりです。
(defroutes static-routes
(GET ["/:filename" :filename #".*"] [filename]
(response/file-response filename {:root "public"})))
(ファイルはただの css/default.css で、最初のインポートの前に完全に機能します。)
今、私は問題を発見したと思います.MYOB ODBCドライバーがJettyサーバー(および私のREPL)の作業ディレクトリを変更しているようです.REPLに次のように入力すると:
(file-seq (File. "."))
一時ファイル ディレクトリのリストが表示され、CSS ファイルが見つからなくなった理由が説明されます。
奇妙なことは、私がそうするなら:
(.getAbsolutePath (File. "."))
アプリケーションの正しいディレクトリを取得します。
MYOB ODBC ドライバーのこの癖を回避できる何か (絶対パスでのコーディング以外) を知っている人はいますか?
起動時に絶対パスを取得して保存できると思いますが、それはuberjarで機能しますか?
編集: JVM の制限により修正できないようですか?