Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
&引用;java.io.FileNotFoundException“;与作为函数参数的端口号8080相关的错误_Java_Clojure_File Not Found_Function Parameter - Fatal编程技术网

&引用;java.io.FileNotFoundException“;与作为函数参数的端口号8080相关的错误

&引用;java.io.FileNotFoundException“;与作为函数参数的端口号8080相关的错误,java,clojure,file-not-found,function-parameter,Java,Clojure,File Not Found,Function Parameter,我正在练习Clojure教程“基本Web开发” 最后,我面临一个问题。当我执行 $ java -jar target/clojure-webapp-0.1.0-SNAPSHOT-standalone.jar 8080 发生了一个错误 Exception in thread "main" java.io.FileNotFoundException: 8080 (No such file or directory) 因此,端口号被解析为找不到的文件的文件名 我不熟悉Java,但我认为情况很清楚。

我正在练习Clojure教程“基本Web开发”

最后,我面临一个问题。当我执行

$ java -jar target/clojure-webapp-0.1.0-SNAPSHOT-standalone.jar 8080
发生了一个错误

Exception in thread "main" java.io.FileNotFoundException: 8080 (No such file or directory)
因此,端口号被解析为找不到的文件的文件名

我不熟悉Java,但我认为情况很清楚。端口号是典型的函数参数,而不是文件名。请给我解释一下,告诉我怎么修。更多详情:

s@lokal:~/Dropbox/clojure-webapp$ lein uberjar
Created /home/s/Dropbox/clojure-webapp/target/clojure-webapp-0.1.0-SNAPSHOT.jar
Created /home/s/Dropbox/clojure-webapp/target/clojure-webapp-0.1.0-SNAPSHOT-standalone.jar
s@lokal:~/Dropbox/clojure-webapp$ cat ~/Dropbox/clojure-webapp/src/clojure_webapp/handler.clj 
(ns clojure-webapp.handler
  (:require [clojure-webapp.views :as views]
            [compojure.core :refer :all]
            [compojure.route :as route]
            [ring.adapter.jetty :as jetty]
            [ring.middleware.defaults :refer [wrap-defaults site-defaults]])
  (:gen-class))
(defroutes app-routes ; replace the generated app-routes with this
  (GET "/"
       []
       (views/home-page))
  (GET "/add-location"
       []
       (views/add-location-page))
  (POST "/add-location"
        {params :params}
        (views/add-location-results-page params))
  (GET "/location/:loc-id"
       [loc-id]
       (views/location-page loc-id))
  (GET "/all-locations"
       []
       (views/all-locations-page))
  (route/resources "/")
  (route/not-found "Not Found"))

(def app
  (wrap-defaults app-routes site-defaults))


(defn -main
  [& [port]]
  (let [port (Integer. (or port
                           (System/getenv "PORT")
                           5000))]
    (jetty/run-jetty #'app {:port  port
                            :join? false})))
s@lokal:~/Dropbox/clojure-webapp$ java -jar target/clojure-webapp-0.1.0-SNAPSHOT-standalone.jar 8080
Exception in thread "main" java.io.FileNotFoundException: 8080 (No such file or directory)
    at java.base/java.io.FileInputStream.open0(Native Method)
    at java.base/java.io.FileInputStream.open(FileInputStream.java:219)
    at java.base/java.io.FileInputStream.<init>(FileInputStream.java:157)
    at java.base/java.io.FileInputStream.<init>(FileInputStream.java:112)
    at clojure.lang.Compiler.loadFile(Compiler.java:7449)
    at clojure.main$load_script.invokeStatic(main.clj:278)
    at clojure.main$script_opt.invokeStatic(main.clj:338)
    at clojure.main$script_opt.invoke(main.clj:333)
    at clojure.main$main.invokeStatic(main.clj:424)
    at clojure.main$main.doInvoke(main.clj:387)
    at clojure.lang.RestFn.applyTo(RestFn.java:137)
    at clojure.lang.Var.applyTo(Var.java:702)
    at clojure.main.main(main.java:37)
s@lokal:~/Dropbox/clojure-webapp$
s@lokal:~/Dropbox/clojure webapp$lein uberjar
已创建/home/s/Dropbox/clojure-webapp/target/clojure-webapp-0.1.0-SNAPSHOT.jar
已创建/home/s/Dropbox/clojure-webapp/target/clojure-webapp-0.1.0-SNAPSHOT-standalone.jar
s@lokal:~/Dropbox/clojure webapp$cat~/Dropbox/clojure webapp/src/clojure_webapp/handler.clj
(ns clojure-webapp.handler)
(:require[clojure-webapp.views:作为视图]
[compojure.core:参考:全部]
[合成路线:作为路线]
[环形适配器.码头:作为码头]
[ring.middleware.defaults:参考[wrap defaults站点默认值])
(:gen类)
(取消应用程序路由;将生成的应用程序路由替换为
(获取“/”
[]
(浏览/主页))
(获取“/添加位置”
[]
(查看/添加位置页面))
(发布“/添加位置”
{params:params}
(查看/添加位置结果页面参数))
(获取“/location/:loc id”
[loc id]
(视图/位置页面loc id))
(获取“/所有位置”
[]
(视图/所有位置页面))
(路线/资源“/)
(路由/未找到“未找到”))
(def应用程序
(自动换行默认值应用程序路由站点默认值))
(defn-main)
[&[端口]]
(let[端口(整数)。(或端口
(系统/getenv“端口”)
5000))]
(码头/运行码头应用程序{:端口)
:join?false})
s@lokal:~/Dropbox/clojure-webapp$java-jar目标/clojure-webapp-0.1.0-SNAPSHOT-standalone.jar 8080
线程“main”java.io.FileNotFoundException:8080中出现异常(没有这样的文件或目录)
位于java.base/java.io.FileInputStream.open0(本机方法)
位于java.base/java.io.FileInputStream.open(FileInputStream.java:219)
位于java.base/java.io.FileInputStream。(FileInputStream.java:157)
位于java.base/java.io.FileInputStream。(FileInputStream.java:112)
位于clojure.lang.Compiler.loadFile(Compiler.java:7449)
在clojure.main$load_script.invokeStatic(main.clj:278)
在clojure.main$script_opt.invokeStatic(main.clj:338)
在clojure.main$script_opt.invoke(main.clj:333)
在clojure.main$main.invokeStatic(main.clj:424)
在clojure.main$main.doInvoke(main.clj:387)
位于clojure.lang.RestFn.applyTo(RestFn.java:137)
在clojure.lang.Var.applyTo(Var.java:702)
在clojure.main.main(main.java:37)
s@lokal:~/Dropbox/clojure webapp$

我相信本教程有点老了。我想不管怎样,使用底座而不是戒指可能会更快乐。您可以在此处找到“Hello World”教程:

我有一些工作代码是本教程的结果,您可以从这里克隆这些代码:

git@github.com:cloojure/pedestal-tutorial.git
在终端窗口中,通过以下方式启动代码:

> lein run
然后将浏览器导航到:

http://localhost:8890/echo                   ; 演示/测试路线
http://localhost:8890/greet                  ; 通用问候语
http://localhost:8890/greet?name=Bob         ; 正常问候语
http://localhost:8890/greet?name=Voldemort   ; 说不出的!

如果你想坚持使用Ring/Compojure,另一个选择是Clojure食谱,它有很多例子。它既有印刷版(推荐)也有在线版:

这是另一本好书:


这里最重要的是你的项目。clj。您是否忘记按照“project.clj中的更改”部分的说明操作,建议您设置
:main
?@amalloy您是对的。我的错误。感谢您的大力支持!