Giter Club home page Giter Club logo

hectorqin / reader Goto Github PK

View Code? Open in Web Editor NEW
6.9K 6.9K 5.0K 12.55 MB

阅读3服务器版,桌面端,iOS可用。后端 Kotlin + Spring Boot + Vert.x + Coroutine ;前端 Vue.js + Element。麻烦点点star,关注一下公众号【假装大佬】❗️ Demo服务器由于未备案已被关停,建议自行搭建

License: GNU General Public License v3.0

Dockerfile 0.01% Kotlin 72.73% JavaScript 4.03% HTML 1.42% Vue 18.90% CSS 1.04% Shell 0.72% Roff 0.71% AMPL 0.20% Batchfile 0.25%

reader's Introduction

reader

阅读3服务器版,不需要手机。

在线体验 👉 https://reader.htmake.com

加入TG群(限时开放) 👉 https://t.me/+pQ8HDlANPZ84ZWNl

关注公众号,查看教程和书源👇

注意❗️

Reader 完整源码仅开放到 v2.5.4,新版本当前仅开放部分开源源码,见 https://github.com/hectorqin/reader-legado.

免责声明(Disclaimer) 阅读是一款提供网络文学搜索的工具,为广大网络文学爱好者提供一种方便、快捷舒适的试读体验。

当您搜索一本书的时,阅读会将该书的书名以关键词的形式提交到各个第三方网络文学网站。各第三方网站返回的内容与阅读无关,阅读对其概不负责,亦不承担任何法律责任。任何通过使用阅读而链接到的第三方网页均系他人制作或提供,您可能从第三方网页上获得其他服务,阅读对其合法性概不负责,亦不承担任何法律责任。第三方搜索引擎结果根据您提交的书名自动搜索获得并提供试读,不代表阅读赞成或被搜索链接到的第三方网页上的内容或立场。您应该对使用搜索引擎的结果自行承担风险。

阅读不做任何形式的保证:不保证第三方搜索引擎的搜索结果满足您的要求,不保证搜索服务不中断,不保证搜索结果的安全性、正确性、及时性、合法性。因网络状况、通讯线路、第三方网站等任何原因而导致您不能正常使用阅读,阅读不承担任何法律责任。阅读尊重并保护所有使用阅读用户的个人隐私权,您注册的用户名、电子邮件地址等个人资料,非经您亲自许可或根据相关法律、法规的强制性规定,阅读不会主动地泄露给第三方。

阅读致力于最大程度地减少网络文学阅读者在自行搜寻过程中的无意义的时间浪费,通过专业搜索展示不同网站中网络文学的最新章节。阅读在为广大小说爱好者提供方便、快捷舒适的试读体验的同时,也使优秀网络文学得以迅速、更广泛的传播,从而达到了在一定程度促进网络文学充分繁荣发展之目的。阅读鼓励广大小说爱好者通过阅读发现优秀网络小说及其提供商,并建议阅读正版图书。任何单位或个人认为通过阅读搜索链接到的第三方网页内容可能涉嫌侵犯其信息网络传播权,应该及时向阅读提出书面权力通知,并提供身份证明、权属证明及详细侵权情况证明。阅读在收到上述法律文件后,将会依法尽快断开相关链接内容。

功能说明 书源管理
- 书架管理
- 书架布局
- 搜索
- 书海
- 看书
- 移动端适配
- 换源
- 翻页方式
- 手势支持
- 自定义主题
- 自定义样式
- WebDAV同步
- 文字替换过滤
- 听书<仅部分浏览器支持,手机端会因为锁屏而失效>
- 用户配置备份恢复
- 支持漫画
- 支持音频
- 书源失效检测
- 导入本地TXT、EPUB、UMD、PDF格式的书籍
- 书籍分组
- RSS订阅
- 定时更新书架
- 并发搜书
- 本地书仓
- 支持kindle阅读

下载与安装

详见文档

TODO

  • 定时更新书架书籍章节
  • 多源并发搜索书籍
  • 并发更新书架章节
  • 并发搜索书籍来源
  • WebDav同步
  • 导入本地书籍,支持epub
  • 阅读3核心兼容。已最大可能兼容,支持使用webview,支持使用javascript。
  • 支持RSS订阅

问题

  • 部分使用了 Javascript 的书源可能会报错,如调用原生java等高级Javascript功能
  • webview 功能需要另外部署接口,不支持 sourceRegex 匹配资源响应
  • 不支持书源登录功能

感谢

其它

reader's People

Contributors

ecalose avatar emuqi avatar hectorqin avatar liloupar avatar nzesupb avatar wyangx avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

reader's Issues

希望可以完善接口文档的支持

希望可以尽快完善接口文档,很多接口文档现在都还是很清晰,非常感谢
其次还有一个小问题,当我复制一大段json书源时系统总是提示我这不是json格式
@hectorqin

Docker部署之后可以,但机子重启之后就无法运行

[main] 18:34:55.217 INFO ReaderApplicationKt - Starting ReaderApplicationKt on 90bcbeffa400 with PID 9 (/app/bin/reader.jar started by root in /)
[main] 18:34:55.220 DEBUG ReaderApplicationKt - Running with Spring Boot v2.1.6.RELEASE, Spring v5.1.8.RELEASE
[main] 18:34:55.220 INFO ReaderApplicationKt - The following profiles are active: prod
[main] 18:34:57.358 WARN AnnotationConfigApplicationContext - Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'readerApplication': Invocation of init method failed; nested exception is java.lang.ExceptionInInitializerError
[main] 18:34:57.370 INFO ConditionEvaluationReportLoggingListener -

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
[main] 18:34:57.376 ERROR SpringApplication - Application run failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'readerApplication': Invocation of init method failed; nested exception is java.lang.ExceptionInInitializerError
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:139)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:414)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1770)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:593)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:515)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:845)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:877)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:549)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:742)
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:389)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:311)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1213)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1202)
at com.htmake.reader.ReaderApplicationKt.main(ReaderApplication.kt:70)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:47)
at org.springframework.boot.loader.Launcher.launch(Launcher.java:86)
at org.springframework.boot.loader.Launcher.launch(Launcher.java:50)
at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51)
Caused by: java.lang.ExceptionInInitializerError: null
at io.vertx.core.net.impl.transport.Transport.eventLoopGroup(Transport.java:148)
at io.vertx.core.impl.VertxImpl.(VertxImpl.java:143)
at io.vertx.core.impl.VertxImpl.vertx(VertxImpl.java:92)
at io.vertx.core.impl.VertxFactoryImpl.vertx(VertxFactoryImpl.java:40)
at io.vertx.core.impl.VertxFactoryImpl.vertx(VertxFactoryImpl.java:32)
at io.vertx.core.impl.VertxFactoryImpl.vertx(VertxFactoryImpl.java:27)
at io.vertx.core.Vertx.vertx(Vertx.java:75)
at com.htmake.reader.ReaderApplication$Companion$vertx$2.invoke(ReaderApplication.kt:32)
at com.htmake.reader.ReaderApplication$Companion$vertx$2.invoke(ReaderApplication.kt:32)
at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
at com.htmake.reader.ReaderApplication$Companion.getVertx(ReaderApplication.kt:32)
at com.htmake.reader.ReaderApplication$Companion.vertx(ReaderApplication.kt:33)
at com.htmake.reader.ReaderApplication.deployVerticle(ReaderApplication.kt:48)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:363)
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:307)
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:136)
... 25 common frames omitted
Caused by: java.lang.IllegalArgumentException: availableProcessors: 0 (expected: > 0)
at io.netty.util.internal.ObjectUtil.checkPositive(ObjectUtil.java:44)
at io.netty.util.NettyRuntime$AvailableProcessorsHolder.setAvailableProcessors(NettyRuntime.java:44)
at io.netty.util.NettyRuntime$AvailableProcessorsHolder.availableProcessors(NettyRuntime.java:70)
at io.netty.util.NettyRuntime.availableProcessors(NettyRuntime.java:98)
at io.netty.channel.MultithreadEventLoopGroup.(MultithreadEventLoopGroup.java:41)
... 45 common frames omitted

storage变为storage-backup

服务器版重启服务器后再启动reader.jar
storage会变为storage-backup
有什么办法避免吗

建议把书能够预读到服务器上

预读的资源都放在本地,如果书源失效(特别是一些小众的书籍)会导致看到一半就没法看,或者得更换书源。建议可以在阅读时将正本书全部下载到服务器上。如果能够把侧边音量键翻页的功能加上就更好啦。

一些建议

希望大佬可以加入导入书籍的功能,并且支持epub
_(:з」∠)_望采纳

webdav返回401

开启了 reader.app.secure 选项,使用网页注册的用户名和密码登录,然后返回401,无限的循环登录……这个问题怎么解决?使用docker搭建的……

上传txt书籍文件报错 " onHandlerError: java.lang.IllegalStateException “

F:\reader3>java -jar reader-1.9.0.jar
██████  ███████  █████  ██████  ███████ ██████ 
██   ██ ██      ██   ██ ██   ██ ██      ██   ██ 
██████  █████   ███████ ██   ██ █████   ██████  
██   ██ ██      ██   ██ ██   ██ ██      ██   ██ 
██   ██ ███████ ██   ██ ██████  ███████ ██   ██ 
                                                

2022-04-16 13:14:02 [main] INFO  o.l.reader.ReaderApplicationKt - Starting ReaderApplicationKt on DESKTOP-1234with PID 11014 (F:\reader3\reader-1.9.0.jar started by admin in F:\reader3)
2022-04-16 13:14:02 [main] DEBUG o.l.reader.ReaderApplicationKt - Running with Spring Boot v2.1.6.RELEASE, Spring v5.1.8.RELEASE
2022-04-16 13:14:02 [main] INFO  o.l.reader.ReaderApplicationKt - No active profile set, falling back to default profiles: default
2022-04-16 13:14:03 [vert.x-eventloop-thread-2] INFO  org.lightink.reader.api.YueduApi - port: 8080
2022-04-16 13:14:03 [vert.x-eventloop-thread-2] INFO  org.lightink.reader.api.YueduApi - serverPort: 8080
2022-04-16 13:14:03 [vert.x-eventloop-thread-2] INFO  org.lightink.reader.utils.VertExt - osName: Windows 10 currentDir: F:\reader3
2022-04-16 13:14:03 [vert.x-eventloop-thread-2] INFO  org.lightink.reader.utils.VertExt - storage key: [cache, bookInfoCache] path: F:\storage\cache\bookInfoCache.json
2022-04-16 13:14:03 [vert.x-eventloop-thread-2] INFO  org.lightink.reader.utils.VertExt - storage key: [cache, invalidBookSourceList] path: F:\storage\cache\invalidBookSourceList.json
2022-04-16 13:14:03 [vert.x-eventloop-thread-2] INFO  o.l.reader.verticle.RestVerticle - port: 8080
2022-04-16 13:14:03 [main] INFO  o.s.s.c.ThreadPoolTaskScheduler - Initializing ExecutorService 'taskScheduler'
2022-04-16 13:14:03 [main] INFO  o.l.reader.ReaderApplicationKt - Started ReaderApplicationKt in 2.415 seconds (JVM running for 2.903)
2022-04-16 13:14:04 [vert.x-eventloop-thread-2] INFO  o.l.reader.verticle.RestVerticle - Server running at: http://localhost:8080
2022-04-16 13:14:04 [vert.x-eventloop-thread-2] INFO  o.l.reader.verticle.RestVerticle - Web reader running at: http://localhost:8080
2022-04-16 13:14:24 [vert.x-eventloop-thread-2] INFO  i.v.e.w.h.impl.LoggerHandlerImpl - 0:0:0:0:0:0:0:1 - - [Sat, 16 Apr 2022 05:14:24 GMT] "GET / HTTP/1.1" 200 4647 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.88 Safari/537.36"
2022-04-16 13:14:24 [vert.x-eventloop-thread-2] INFO  o.l.reader.verticle.RestVerticle - GET http://localhost:8080/reader3/getUserInfo
2022-04-16 13:14:24 [vert.x-eventloop-thread-2] INFO  o.l.reader.verticle.RestVerticle - request body:
2022-04-16 13:14:24 [DefaultDispatcher-worker-1] INFO  i.v.e.w.h.impl.LoggerHandlerImpl - 0:0:0:0:0:0:0:1 - - [Sat, 16 Apr 2022 05:14:24 GMT] "GET /reader3/getUserInfo HTTP/1.1" 200 74 "http://localhost:8080/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.88 Safari/537.36"
2022-04-16 13:14:24 [vert.x-eventloop-thread-2] INFO  o.l.reader.verticle.RestVerticle - GET http://localhost:8080/reader3/getBookshelf?refresh=0
2022-04-16 13:14:24 [vert.x-eventloop-thread-2] INFO  o.l.reader.verticle.RestVerticle - request body:
2022-04-16 13:14:24 [DefaultDispatcher-worker-1] INFO  org.lightink.reader.utils.VertExt - storage key: [data, default, bookshelf] path: F:\storage\data\default\bookshelf.json
2022-04-16 13:14:24 [DefaultDispatcher-worker-1] INFO  i.v.e.w.h.impl.LoggerHandlerImpl - 0:0:0:0:0:0:0:1 - - [Sat, 16 Apr 2022 05:14:24 GMT] "GET /reader3/getBookshelf?refresh=0 HTTP/1.1" 200 42 "http://localhost:8080/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.88 Safari/537.36"
2022-04-16 13:14:27 [vert.x-eventloop-thread-2] INFO  i.v.e.w.h.impl.LoggerHandlerImpl - 0:0:0:0:0:0:0:1 - - [Sat, 16 Apr 2022 05:14:27 GMT] "GET /service-worker.js HTTP/1.1" 200 5875 "http://localhost:8080/service-worker.js" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.88 Safari/537.36"
2022-04-16 13:14:39 [vert.x-eventloop-thread-2] INFO  o.l.reader.verticle.RestVerticle - POST http://localhost:8080/reader3/importBookPreview
2022-04-16 13:14:39 [vert.x-eventloop-thread-2] INFO  o.l.reader.verticle.RestVerticle - request body:
2022-04-16 13:14:39 [DefaultDispatcher-worker-3] INFO  org.lightink.reader.api.YueduApi - uploadFile: file-uploads\a69c7f00-7223-4cba-a1ab-942a7f23c204 test.txt file-uploads\a69c7f00-7223-4cba-a1ab-942a7f23c204
2022-04-16 13:14:39 [DefaultDispatcher-worker-3] INFO  org.lightink.reader.api.YueduApi - moveTo: storage\assets\default\book\test.txt
2022-04-16 13:14:40 [DefaultDispatcher-worker-3] ERROR org.lightink.reader.api.YueduApi - onHandlerError:
java.lang.IllegalStateException: DefaultData::class.java.…tor}$txtTocRuleFileName") must not be null
        at io.legado.app.help.DefaultData$txtTocRules$2.invoke(DefaultData.kt:13)
        at io.legado.app.help.DefaultData$txtTocRules$2.invoke(DefaultData.kt:9)
        at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
        at io.legado.app.help.DefaultData.getTxtTocRules(DefaultData.kt)
        at io.legado.app.localBook.TextFile$Companion.getTocRules(TextFile.kt:263)
        at io.legado.app.localBook.TextFile$Companion.access$getTocRules(TextFile.kt:240)
        at io.legado.app.localBook.TextFile.analyze(TextFile.kt:30)
        at io.legado.app.localBook.LocalBook.getChapterList(LocalBook.kt:26)
        at org.lightink.reader.api.YueduApi.importBookPreview(YueduApi.kt:1592)
        at org.lightink.reader.api.YueduApi$initRouter$55.invokeSuspend(YueduApi.kt:237)
        at org.lightink.reader.api.YueduApi$initRouter$55.invoke(YueduApi.kt)
        at org.lightink.reader.verticle.RestVerticle$coroutineHandler$1$job$1.invokeSuspend(RestVerticle.kt:133)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlinx.coroutines.DispatchedTask.run(Dispatched.kt:238)
        at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:594)
        at kotlinx.coroutines.scheduling.CoroutineScheduler.access$runSafely(CoroutineScheduler.kt:60)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:742)
2022-04-16 13:14:40 [DefaultDispatcher-worker-3] INFO  i.v.e.w.h.impl.LoggerHandlerImpl - 0:0:0:0:0:0:0:1 - - [Sat, 16 Apr 2022 05:14:39 GMT] "POST /reader3/importBookPreview HTTP/1.1" 200 136 "http://localhost:8080/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.88 Safari/537.36"

请问能自动加载下一章和缓存无效

希望能增加自动加载下一章的功能,每次看完本章都需要点加载下一章太麻烦了;
我看这个变量cacheChapterContent=true 缓存章节内容,我在创建docker容器时添加以下变量
-e READER_APP_CACHECHAPTERCONTENT=true
但是并没有生效,想问下docker容器是这样操作么?

一些建议

  1. 背景太少,希望可以用户自行选择放在对应图片文件夹里
  2. 宽度选择太少,建议增加1120px,1280px等等(我看他各档差值都是160px)(可能会有用手机打开的情况,值得考虑)
  3. 字体颜色希望能用户自定义
  4. win的启动,,,这个窗体白板也太大了把,建议搞成启动后不显示窗体,直接缩到小控制栏里,且仅显示图标。
  5. 看书的页面,标题可以改成书名或者章节名
  6. 页面工具栏,左右栏可以根据用户需求设置当前样式或者上下浮动的横条
  7. 配置可以考虑用户自己编辑json配置文件,或者窗体内添加各种设置选项(win端)。或者在首页设置

部分文字乱码

1. 窗口并没有消失

我这都启动好久了,上次你说这个白窗口会自动消失,但是现在还是没有自己隐藏

image

2. 部分文字乱码

edge(chromium内核)93.0.961.38
image
image

firefox 92.0
image
image
image

3. 上传自定义图片会显示后端连接失败(连接的是手机web接口)

GIF 2021-9-10 17-30-15

想装docker版本,怎么卸载桌面版

一开始装了桌面版,现在用虚拟机装了群晖,想安装docker版本的,要怎么才能访问虚拟机里面的docker版本啊?现在在电脑上打开localhost:8080,显示的还是原来的windows桌面版的,即使我把整个reader文件夹和java都删了还是可以访问,这是怎么回事啊,求救!!!我一开始是在笔记本上装的桌面版,然后苹果手机访问不了,后来又在台式机上装了桌面版,还是不行,然后现在用笔记本和台式打开localhost:8080,它们竟然各玩各的!!!笔记本打开的是之前在笔记本上配置好的reader,台式机打开的是台式机上配置好的,我软件快卸载了,怎么办???

[bug]linux server模式导入书源报错

java 17环境下,使用java -jar reader-1.9.0.jar --reader.server.port=XXXX方式启动服务,从阅读app导出书源bookSource.json并通过页面导入,出现如下报错:

Exception in thread "DefaultDispatcher-worker-3" Exception in thread "DefaultDispatcher-worker-2" java.lang.IllegalAccessError: class com.sun.script.javascript.RhinoScriptEngine (in unnamed module @0xed17bee) cannot access class sun.security.action.GetPropertyAction (in module java.base) because module java.base does not export sun.security.action to unnamed module @0xed17bee
at com.sun.script.javascript.RhinoScriptEngine.getLanguageVersion(RhinoScriptEngine.java:154)
at com.sun.script.javascript.RhinoScriptEngine.(RhinoScriptEngine.java:97)
at com.sun.script.javascript.RhinoScriptEngineFactory.getScriptEngine(RhinoScriptEngineFactory.java:78)
at java.scripting/javax.script.ScriptEngineManager.lambda$getEngineBy$2(ScriptEngineManager.java:237)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
at java.base/java.util.stream.StreamSpliterators$WrappingSpliterator.tryAdvance(StreamSpliterators.java:300)
at java.base/java.util.stream.Streams$ConcatSpliterator.tryAdvance(Streams.java:723)
at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:129)
at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:527)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:513)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
at java.base/java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:150)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:647)
at java.scripting/javax.script.ScriptEngineManager.getEngineBy(ScriptEngineManager.java:246)
at java.scripting/javax.script.ScriptEngineManager.getEngineByName(ScriptEngineManager.java:185)
at io.legado.app.constant.AppConst$SCRIPT_ENGINE$2.invoke(AppConst.kt:17)
at io.legado.app.constant.AppConst$SCRIPT_ENGINE$2.invoke(AppConst.kt:7)
at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
at io.legado.app.constant.AppConst.getSCRIPT_ENGINE(AppConst.kt)
at io.legado.app.data.entities.BookSource.evalJS(BookSource.kt:146)
at io.legado.app.data.entities.BookSource.getHeaderMap(BookSource.kt:75)
at jdk.internal.reflect.GeneratedMethodAccessor16.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:688)
at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:719)
at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:155)
at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider._serialize(DefaultSerializerProvider.java:480)
at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:319)
at com.fasterxml.jackson.databind.ObjectMapper._convert(ObjectMapper.java:3728)
at com.fasterxml.jackson.databind.ObjectMapper.convertValue(ObjectMapper.java:3668)
at io.vertx.core.json.JsonObject.mapFrom(JsonObject.java:107)
at org.lightink.reader.api.YueduApi.saveSources(YueduApi.kt:2355)
at org.lightink.reader.api.YueduApi$initRouter$3.invokeSuspend(YueduApi.kt:95)
at org.lightink.reader.api.YueduApi$initRouter$3.invoke(YueduApi.kt)
at org.lightink.reader.verticle.RestVerticle$coroutineHandler$1$job$1.invokeSuspend(RestVerticle.kt:133)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(Dispatched.kt:238)
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:594)
at kotlinx.coroutines.scheduling.CoroutineScheduler.access$runSafely(CoroutineScheduler.kt:60)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:742)
java.lang.NoClassDefFoundError: Could not initialize class com.sun.script.javascript.RhinoScriptEngine
at com.sun.script.javascript.RhinoScriptEngineFactory.getScriptEngine(RhinoScriptEngineFactory.java:78)
at java.scripting/javax.script.ScriptEngineManager.lambda$getEngineBy$2(ScriptEngineManager.java:237)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
at java.base/java.util.stream.StreamSpliterators$WrappingSpliterator.tryAdvance(StreamSpliterators.java:300)
at java.base/java.util.stream.Streams$ConcatSpliterator.tryAdvance(Streams.java:723)
at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:129)
at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:527)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:513)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
at java.base/java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:150)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:647)
at java.scripting/javax.script.ScriptEngineManager.getEngineBy(ScriptEngineManager.java:246)
at java.scripting/javax.script.ScriptEngineManager.getEngineByName(ScriptEngineManager.java:185)
at io.legado.app.constant.AppConst$SCRIPT_ENGINE$2.invoke(AppConst.kt:17)
at io.legado.app.constant.AppConst$SCRIPT_ENGINE$2.invoke(AppConst.kt:7)
at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
at io.legado.app.constant.AppConst.getSCRIPT_ENGINE(AppConst.kt)
at io.legado.app.data.entities.BookSource.evalJS(BookSource.kt:146)
at io.legado.app.data.entities.BookSource.getHeaderMap(BookSource.kt:75)
at jdk.internal.reflect.GeneratedMethodAccessor16.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:688)
at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:719)
at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:155)
at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider._serialize(DefaultSerializerProvider.java:480)
at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:319)
at com.fasterxml.jackson.databind.ObjectMapper._convert(ObjectMapper.java:3728)
at com.fasterxml.jackson.databind.ObjectMapper.convertValue(ObjectMapper.java:3668)
at io.vertx.core.json.JsonObject.mapFrom(JsonObject.java:107)
at org.lightink.reader.api.YueduApi.saveSources(YueduApi.kt:2355)
at org.lightink.reader.api.YueduApi$initRouter$3.invokeSuspend(YueduApi.kt:95)
at org.lightink.reader.api.YueduApi$initRouter$3.invoke(YueduApi.kt)
at org.lightink.reader.verticle.RestVerticle$coroutineHandler$1$job$1.invokeSuspend(RestVerticle.kt:133)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(Dispatched.kt:238)
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:594)
at kotlinx.coroutines.scheduling.CoroutineScheduler.access$runSafely(CoroutineScheduler.kt:60)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:742)

webdav无法设置,登录界面循环

输入IP:端口/reader3/webdav之后提示登录,输入用户/密码之后又重新弹出登录界面,手机上试过也是不行,不知道怎么回事,多用户环境,用户什么的也是要文档要求设置的,用的是虚拟机群晖+docker版本

无法搜索书籍

后端部署完成,且导入书源后无法搜索书籍。已多次尝试并更换书源尝试后仍是显示无法连接后端。浏览器截图及后端数据如下:
Snipaste_2021-09-02_20-26-59

F:\Reader\storage\bookSource.json 2021-09-02 20:26:26 [DefaultDispatcher-worker-1] INFO i.v.e.w.h.impl.LoggerHandlerImpl - 0:0:0:0:0:0:0:1 - - [Thu, 02 Sep 2021 12:26:26 GMT] "GET /reader3/getSources HTTP/1.1" 200 385759 "http://localhost:8080/web/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36" 2021-09-02 20:26:45 [vert.x-eventloop-thread-2] INFO o.l.reader.verticle.RestVerticle - request url: http://localhost:8080/reader3/searchBook?key=瀹岀編涓栫晫&bookSourceUrl=https://www.shukeba.com 2021-09-02 20:26:45 [vert.x-eventloop-thread-2] INFO o.l.reader.verticle.RestVerticle - request body: 2021-09-02 20:26:45 [DefaultDispatcher-worker-1] INFO org.lightink.reader.api.YueduApi - searchBook Exception in thread "DefaultDispatcher-worker-1" java.lang.IllegalAccessError: class com.sun.script.javascript.RhinoScriptEngine (in unnamed module @0x7006c658) cannot access class sun.security.action.GetPropertyAction (in module java.base) because module java.base does not export sun.security.action to unnamed module @0x7006c658 at com.sun.script.javascript.RhinoScriptEngine.getLanguageVersion(RhinoScriptEngine.java:154) at com.sun.script.javascript.RhinoScriptEngine.<clinit>(RhinoScriptEngine.java:97) at com.sun.script.javascript.RhinoScriptEngineFactory.getScriptEngine(RhinoScriptEngineFactory.java:78) at java.scripting/javax.script.ScriptEngineManager.getEngineByName(ScriptEngineManager.java:241) at io.legado.app.constant.AppConst$SCRIPT_ENGINE$2.invoke(AppConst.kt:17) at io.legado.app.constant.AppConst$SCRIPT_ENGINE$2.invoke(AppConst.kt:7) at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74) at io.legado.app.constant.AppConst.getSCRIPT_ENGINE(AppConst.kt) at io.legado.app.model.analyzeRule.AnalyzeUrl.replaceKeyPageJs(AnalyzeUrl.kt:138) at io.legado.app.model.analyzeRule.AnalyzeUrl.<init>(AnalyzeUrl.kt:67) at io.legado.app.model.analyzeRule.AnalyzeUrl.<init>(AnalyzeUrl.kt:40) at io.legado.app.model.WebBook.searchBook(WebBook.kt:32) at org.lightink.reader.api.YueduApi.searchBook(YueduApi.kt:338) at org.lightink.reader.api.YueduApi$initRouter$13.invokeSuspend(YueduApi.kt:79) at org.lightink.reader.api.YueduApi$initRouter$13.invoke(YueduApi.kt) at org.lightink.reader.verticle.RestVerticle$coroutineHandler$1$job$1.invokeSuspend(RestVerticle.kt:93) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) at kotlinx.coroutines.DispatchedTask.run(Dispatched.kt:238) at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:594) at kotlinx.coroutines.scheduling.CoroutineScheduler.access$runSafely(CoroutineScheduler.kt:60) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:742)

能出个部署教程吗?

想在群晖的docker上部署这个阅读小说,但是技术有限,很多东西看不懂,希望能出个简单的图文教程

文字排版问题

手机使用阅读的时候,点击滑动书页会导致裁切错误,经常出现字只有一半的情况,希望可以解决一下
PS:跪求增加arm的docker版本。。

服务器端是否可以通过代理连接书源?

我通过docker部署了应用,在网页上添加书源后,有些需要通过代理连接。
我看到说明的“接口服务配置”部分有提到代理,但我并没有找到如何去配置,比如配置文件路径什么的。
我尝试把那些关键字作为环境变量,貌似也没有效果。

上传书籍 Error: Request failed with status code 404

ubuntu20.04 docker下

[DefaultDispatcher-worker-4] 12:10:01.048 INFO VertExt - storage key: [data, users] path: /storage/data/users.json
[DefaultDispatcher-worker-4] 12:10:01.048 INFO VertExt - storage key: [data, fsdsoyu, bookshelf] path: /storage/data/fsdsoyu/bookshelf.json
[DefaultDispatcher-worker-4] 12:10:01.048 INFO VertExt - storage key: [data, fsdsoyu, bookSource] path: /storage/data/fsdsoyu/bookSource.j>
[DefaultDispatcher-worker-5] 12:10:01.189 INFO VertExt - storage key: [data, fsdsoyu, 万族入侵:我有一剑可破万法_, 6786452b580552d67351540>
[DefaultDispatcher-worker-3] 12:10:01.359 INFO VertExt - storage key: [data, fsdsoyu, 万族入侵:我有一剑可破万法_/6786452b580552d673515404>
[DefaultDispatcher-worker-3] 12:10:01.360 INFO VertExt - storage key: [data, fsdsoyu, bookshelf] path: /storage/data/fsdsoyu/bookshelf.json
[DefaultDispatcher-worker-3] 12:10:01.362 INFO VertExt - storage key: [data, fsdsoyu, bookshelf] path: /storage/data/fsdsoyu/bookshelf.json
[DefaultDispatcher-worker-1] 12:10:01.364 INFO YueduApi - Loop: 1 concurrentCount: 1 lastIndex: 0 costTime: 177 ms
[DefaultDispatcher-worker-1] 12:10:01.364 INFO YueduApi - Loop: 2 concurrentCount: 0 lastIndex: 1 costTime: 0 ms
[DefaultDispatcher-worker-1] 12:10:01.364 INFO YueduApi - 书架书籍更新检查结束
[vert.x-eventloop-thread-2] 12:10:27.797 WARN LoggerHandlerImpl - 10.0.0.11 - - [Tue, 12 Apr 2022 04:10:27 GMT] "POST /reader/importBookPr>
[vert.x-eventloop-thread-2] 12:10:41.775 WARN LoggerHandlerImpl - 10.0.0.11 - - [Tue, 12 Apr 2022 04:10:41 GMT] "POST /reader/importBookPr>

能否支持导入书源时自动检测排除含JavaScript条目

1、试了不少书源都报 #3 的错,出了错就只能删了配置文件重来,能不能支持在导入时就检测?
2、同样的书源,为什么用docker搭的就不报错,用本地server端搭的就报错?
3、在线导入书源时,前一次导入的全选数量会留在后面(比如第一次导入51条,第二次100条只显示51条,刷新后正常)
4、1.90的Server端版本号标的是v1.8.0-03231151?
感谢!

ARM64设备安装docker打开IP:8080容器就自动重启,每个镜像都安装试过,换过N1和贝壳云都是这种情况。

stdout: ██████  ███████  █████  ██████  ███████ ██████ 
stdout: ██   ██ ██      ██   ██ ██   ██ ██      ██   ██ 
stdout: ██████  █████  ███████ ██  ██ █████  ██████  
stdout: ██   ██ ██     ██   ██ ██  ██ ██     ██   ██ 
stdout: ██  ██ ███████ ██  ██ ██████  ███████ ██  ██ 
stdout:                                              
stdout:
stderr: kotlin.io.NoSuchFileException: storage-backup: The source file doesn't exist.
stderr: at kotlin.io.FilesKt__UtilsKt.copyRecursively(Utils.kt:263)
stderr: at kotlin.io.FilesKt__UtilsKt.copyRecursively$default(Utils.kt:260)
stderr: at org.lightink.reader.api.YueduApi.migration$suspendImpl(YueduApi.kt:391)
stderr: at org.lightink.reader.api.YueduApi.migration(YueduApi.kt)
stderr: at org.lightink.reader.api.YueduApi.initRouter$suspendImpl(YueduApi.kt:91)
stderr: at org.lightink.reader.api.YueduApi.initRouter(YueduApi.kt)
stderr: at org.lightink.reader.verticle.RestVerticle.start$suspendImpl(RestVerticle.kt:83)
stderr: at org.lightink.reader.verticle.RestVerticle.start(RestVerticle.kt)
stderr: at io.vertx.kotlin.coroutines.CoroutineVerticle$start$1.invokeSuspend(CoroutineVerticle.kt:53)
stderr: at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
stderr: at kotlinx.coroutines.DispatchedTask.run(Dispatched.kt:238)
stderr: at io.vertx.kotlin.coroutines.VertxCoroutineExecutor.execute(VertxCoroutine.kt:214)
stderr: at kotlinx.coroutines.ExecutorCoroutineDispatcherBase.dispatch(Executors.kt:64)
stderr: at kotlinx.coroutines.DispatchedKt.resumeCancellable(Dispatched.kt:413)
stderr: at kotlinx.coroutines.intrinsics.CancellableKt.startCoroutineCancellable(Cancellable.kt:25)
stderr: at kotlinx.coroutines.CoroutineStart.invoke(CoroutineStart.kt:109)
stderr: at kotlinx.coroutines.AbstractCoroutine.start(AbstractCoroutine.kt:154)
stderr: at kotlinx.coroutines.BuildersKt__Builders_commonKt.launch(Builders.common.kt:54)
stderr: at kotlinx.coroutines.BuildersKt.launch(Unknown Source)
stderr: at kotlinx.coroutines.BuildersKt__Builders_commonKt.launch$default(Builders.common.kt:47)
stderr: at kotlinx.coroutines.BuildersKt.launch$default(Unknown Source)
stderr: at io.vertx.kotlin.coroutines.CoroutineVerticle.start(CoroutineVerticle.kt:51)
stderr: at io.vertx.core.Verticle.start(Verticle.java:66)
stderr: at io.vertx.core.impl.DeploymentManager.lambda$doDeploy$8(DeploymentManager.java:556)
stderr: at io.vertx.core.impl.ContextImpl.executeTask(ContextImpl.java:369)
stderr: at io.vertx.core.impl.EventLoopContext.lambda$executeAsync$0(EventLoopContext.java:38)
stderr: at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:163)
stderr: at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:405)
stderr: at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500)
stderr: at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:906)
stderr: at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
stderr: at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
stderr: at java.lang.Thread.run(Thread.java:748)
stdout: #
stdout: # A fatal error has been detected by the Java Runtime Environment:
stdout: #
stdout: # Internal Error (assembler_aarch64.hpp:1156), pid=7, tid=0x0000007f901caaa0
stdout: # guarantee(Rs != Rn && Rs != Rt) failed: unpredictable instruction
stdout: #
stdout: # JRE version: OpenJDK Runtime Environment (8.0_212-b04) (build 1.8.0_212-b04)
stdout: # Java VM: OpenJDK 64-Bit Server VM (25.212-b04 mixed mode linux-aarch64 compressed oops)
stdout: # Derivative: IcedTea 3.12.0
stdout: # Distribution: Custom build (Sat May 4 17:44:26 UTC 2019)
stdout: # Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
stdout: #
stdout: # An error report file with more information is saved as:
stdout: # //hs_err_pid7.log
stdout: #
stdout: # Compiler replay data is saved as:
stdout: # //replay_pid7.log
stdout: #
stdout: # If you would like to submit a bug report, please include
stdout: # instructions on how to reproduce the bug and visit:
stdout: # https://icedtea.classpath.org/bugzilla
stdout: #
stdout: ██████  ███████  █████  ██████  ███████ ██████ 
stdout: ██   ██ ██      ██   ██ ██   ██ ██      ██   ██ 
stdout: ██████  █████  ███████ ██  ██ █████  ██████  
stdout: ██   ██ ██     ██   ██ ██  ██ ██     ██   ██ 
stdout: ██  ██ ███████ ██  ██ ██████  ███████ ██  ██ 
stdout:                                              
stdout:
stderr: kotlin.io.NoSuchFileException: storage-backup: The source file doesn't exist.
stderr: at kotlin.io.FilesKt__UtilsKt.copyRecursively(Utils.kt:263)
stderr: at kotlin.io.FilesKt__UtilsKt.copyRecursively$default(Utils.kt:260)
stderr: at org.lightink.reader.api.YueduApi.migration$suspendImpl(YueduApi.kt:391)
stderr: at org.lightink.reader.api.YueduApi.migration(YueduApi.kt)
stderr: at org.lightink.reader.api.YueduApi.initRouter$suspendImpl(YueduApi.kt:91)
stderr: at org.lightink.reader.api.YueduApi.initRouter(YueduApi.kt)
stderr: at org.lightink.reader.verticle.RestVerticle.start$suspendImpl(RestVerticle.kt:83)
stderr: at org.lightink.reader.verticle.RestVerticle.start(RestVerticle.kt)
stderr: at io.vertx.kotlin.coroutines.CoroutineVerticle$start$1.invokeSuspend(CoroutineVerticle.kt:53)
stderr: at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
stderr: at kotlinx.coroutines.DispatchedTask.run(Dispatched.kt:238)
stderr: at io.vertx.kotlin.coroutines.VertxCoroutineExecutor.execute(VertxCoroutine.kt:214)
stderr: at kotlinx.coroutines.ExecutorCoroutineDispatcherBase.dispatch(Executors.kt:64)
stderr: at kotlinx.coroutines.DispatchedKt.resumeCancellable(Dispatched.kt:413)
stderr: at kotlinx.coroutines.intrinsics.CancellableKt.startCoroutineCancellable(Cancellable.kt:25)
stderr: at kotlinx.coroutines.CoroutineStart.invoke(CoroutineStart.kt:109)
stderr: at kotlinx.coroutines.AbstractCoroutine.start(AbstractCoroutine.kt:154)
stderr: at kotlinx.coroutines.BuildersKt__Builders_commonKt.launch(Builders.common.kt:54)
stderr: at kotlinx.coroutines.BuildersKt.launch(Unknown Source)
stderr: at kotlinx.coroutines.BuildersKt__Builders_commonKt.launch$default(Builders.common.kt:47)
stderr: at kotlinx.coroutines.BuildersKt.launch$default(Unknown Source)
stderr: at io.vertx.kotlin.coroutines.CoroutineVerticle.start(CoroutineVerticle.kt:51)
stderr: at io.vertx.core.Verticle.start(Verticle.java:66)
stderr: at io.vertx.core.impl.DeploymentManager.lambda$doDeploy$8(DeploymentManager.java:556)
stderr: at io.vertx.core.impl.ContextImpl.executeTask(ContextImpl.java:369)
stderr: at io.vertx.core.impl.EventLoopContext.lambda$executeAsync$0(EventLoopContext.java:38)
stderr: at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:163)
stderr: at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:405)
stderr: at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500)
stderr: at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:906)
stderr: at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
stderr: at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
stderr: at java.lang.Thread.run(Thread.java:748)

Docker -compose部署失败

系统是ubuntu20.04,访问9021端口显示拒绝访问

version: '3.1'
services:
read_all:
image: hectorqin/reader
container_name: reader
restart: always
ports:
- 9021:8080
volumes:
- ./log:/log
- ./storage:/storage
environment:
- SPRING_PROFILES_ACTIVE=prod
- READER_APP_SECURE=true
- READER_APP_SECUREKEY= password

[Bug]docker版分组问题

启用和禁用一个分组时,下面会自动创建一个分组。
例如启用或引用“全部”时,下面会创建一个名为“全部”的分组。

顺便问下,docker版的怎么分组啊,直接改json吗?改了group后,书就直接不见了。

请问,如何退出正在使用的用户?

因为第一次登录的时候打勾了自动登录,所以一直都是自动登录用户。现在有其他设备想新建用户登录,留下自己的阅读记录,请问如何退出现有用户的登录?没找到哈。请大佬给说一下。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.