iTXTech / mirai-console-loader

模块化、轻量级且支持完全自定义的 mirai 加载器。
GNU Affero General Public License v3.0
732 stars 63 forks source link

MCL 使用maven-prerelease报错 java.lang.StringIndexOutOfBoundsException #145

Closed Simon-Chenzw closed 1 year ago

Simon-Chenzw commented 1 year ago

Error

  17:26:22 [INFO] iTXTech Mirai Console Loader version 2.1.1-d66fada
  17:26:22 [INFO] https://github.com/iTXTech/mirai-console-loader
  17:26:22 [INFO] This program is licensed under GNU AGPL v3
  17:26:23 [ERROR] java.lang.StringIndexOutOfBoundsException: start -2, end 0, length 0
        at java.base/java.lang.AbstractStringBuilder.checkRangeSIOOBE(Unknown Source)
        at java.base/java.lang.AbstractStringBuilder.delete(Unknown Source)
        at java.base/java.lang.StringBuilder.delete(Unknown Source)
        at org.itxtech.mcl.Utility.bootMirai(Utility.java:96)
        at org.itxtech.mcl.module.builtin.Boot.boot(Boot.java:113)
        at org.itxtech.mcl.module.ModuleManager.phaseBoot(ModuleManager.java:123)
        at org.itxtech.mcl.Loader.lambda$start$4(Loader.java:194)
        at org.itxtech.mcl.Loader.tryCatching(Loader.java:151)
        at org.itxtech.mcl.Loader.start(Loader.java:194)
        at org.itxtech.mcl.Loader.main(Loader.java:84)

Config

{
  "module_packages": [
    "mcl:org.itxtech.mcl.module.builtin"
  ],
  "mirai_repo": "https://mcl.repo.mamoe.net",
  "maven_repo": [
    "https://maven.aliyun.com/repository/public"
  ],
  "packages": {
    "net.mamoe:mirai-console": {
      "channel": "",
      "version": "",
      "type": "",
      "versionLocked": false
    },
    "net.mamoe:mirai-console-terminal": {
      "channel": "",
      "version": "",
      "type": "",
      "versionLocked": false
    },
    "net.mamoe:mirai-core-all": {
      "channel": "",
      "version": "",
      "type": "",
      "versionLocked": false
    },
    "net.mamoe:mirai-api-http": {
      "channel": "stable-v2",
      "version": "",
      "type": "plugins",
      "versionLocked": false
    }
  },
  "archiveSuffix": [
    ".zip",
    ".mirai2.jar",
    ".mirai.jar",
    "-all.jar",
    ".jar"
  ],
  "disabled_modules": [
    "addon",
    "announcement",
    "updater"
  ],
  "proxy": "",
  "log_level": 1,
  "modules_props": {}
}

Dockerfile

# download mirai-console-loader
FROM alpine:latest as mcl-downloader
WORKDIR /home/app

RUN apk add jq
RUN wget -qO- https://api.github.com/repos/iTXTech/mirai-console-loader/releases/latest \
    | jq -r '.assets[] | select( .name | endswith(".zip") ) | .browser_download_url' \
    | xargs -n1 wget -qO- \
    | busybox unzip -

# runtime
FROM eclipse-temurin:17-jre-alpine as runtime
WORKDIR /home/app
EXPOSE 8080
ENV TZ=Asia/Shanghai

COPY --from=mcl-downloader /home/app/mcl.jar .
# NOTE addon must be first
RUN java -jar mcl.jar --disable-module addon \
    && java -jar mcl.jar --disable-module announcement \
    && java -jar mcl.jar --disable-module updater \
    && java -jar mcl.jar --update-package net.mamoe:mirai-api-http --channel stable-v2 --type plugin \
    && echo /stop | java -jar mcl.jar --mrm-use github
CMD ["java", "-jar", "mcl.jar"]
docker build -t mirai-api .
docker run -it mirai-api # exec mcl
docker run -it mirai-api sh # debug
Simon-Chenzw commented 1 year ago

尝试过 https://github.com/iTXTech/mirai-console-loader/issues/95#issuecomment-1146568070 Mirai 使用 iTXTech Maven 使用 https://repo1.maven.org/maven2/

Simon-Chenzw commented 1 year ago

没事了 禁用了 updater 的问题 顺便问一下怎么锁版本

Simon-Chenzw commented 1 year ago

切beta了就还是报错

# download mirai-console-loader
FROM alpine:latest as mcl-downloader
WORKDIR /home/app

RUN apk add jq
RUN wget -qO- https://api.github.com/repos/iTXTech/mirai-console-loader/releases/latest \
    | jq -r '.assets[] | select( .name | endswith(".zip") ) | .browser_download_url' \
    | xargs -n1 wget -qO- \
    | busybox unzip -

# runtime
FROM eclipse-temurin:17-jre-alpine as runtime
WORKDIR /home/app
EXPOSE 8080
ENV TZ=Asia/Shanghai

COPY --from=mcl-downloader /home/app/mcl.jar .
# NOTE addon must be first
RUN java -jar mcl.jar --disable-module addon \
    && java -jar mcl.jar --disable-module announcement \
    && java -jar mcl.jar --update-package net.mamoe:mirai-core-all --channel maven-prerelease \
    && java -jar mcl.jar --update-package net.mamoe:mirai-console --channel maven-prerelease \
    && java -jar mcl.jar --update-package net.mamoe:mirai-console-terminal --channel maven-prerelease \
    && java -jar mcl.jar --update-package net.mamoe:mirai-api-http --channel stable-v2 --type plugin \
    && java -jar mcl.jar --mrm-use github < <(echo /stop)
ENTRYPOINT ["java", "-jar", "mcl.jar"]
  09:28:29 [INFO] iTXTech Mirai Console Loader version 2.1.1-d66fada
  09:28:29 [INFO] https://github.com/iTXTech/mirai-console-loader
  09:28:29 [INFO] This program is licensed under GNU AGPL v3
  09:28:30 [INFO] Verifying "net.mamoe:mirai-console" v2.13.0-RC2
  09:28:31 [INFO] Verifying "net.mamoe:mirai-console-terminal" v2.13.0-RC2
  09:28:31 [INFO] Verifying "net.mamoe:mirai-core-all" v2.13.0-RC2
  09:28:32 [INFO] Verifying "net.mamoe:mirai-api-http" v2.6.2
  09:28:32 [ERROR] java.lang.StringIndexOutOfBoundsException: start -2, end 0, length 0
        at java.base/java.lang.AbstractStringBuilder.checkRangeSIOOBE(Unknown Source)
        at java.base/java.lang.AbstractStringBuilder.delete(Unknown Source)
        at java.base/java.lang.StringBuilder.delete(Unknown Source)
        at org.itxtech.mcl.Utility.bootMirai(Utility.java:96)
        at org.itxtech.mcl.module.builtin.Boot.boot(Boot.java:113)
        at org.itxtech.mcl.module.ModuleManager.phaseBoot(ModuleManager.java:123)
        at org.itxtech.mcl.Loader.lambda$start$4(Loader.java:194)
        at org.itxtech.mcl.Loader.tryCatching(Loader.java:151)
        at org.itxtech.mcl.Loader.start(Loader.java:194)
        at org.itxtech.mcl.Loader.main(Loader.java:84)
{
  "module_packages": [
    "mcl:org.itxtech.mcl.module.builtin"
  ],
  "mirai_repo": "https://mcl.repo.mamoe.net",
  "maven_repo": [
    "https://maven.aliyun.com/repository/public"
  ],
  "packages": {
    "net.mamoe:mirai-console": {
      "channel": "maven-prerelease",
      "version": "2.13.0-RC2",
      "type": "",
      "versionLocked": false
    },
    "net.mamoe:mirai-console-terminal": {
      "channel": "maven-prerelease",
      "version": "2.13.0-RC2",
      "type": "",
      "versionLocked": false
    },
    "net.mamoe:mirai-core-all": {
      "channel": "maven-prerelease",
      "version": "2.13.0-RC2",
      "type": "",
      "versionLocked": false
    },
    "net.mamoe:mirai-api-http": {
      "channel": "stable-v2",
      "version": "2.6.2",
      "type": "plugins",
      "versionLocked": false
    }
  },
  "archiveSuffix": [
    ".zip",
    ".mirai2.jar",
    ".mirai.jar",
    "-all.jar",
    ".jar"
  ],
  "disabled_modules": [
    "addon",
    "announcement"
  ],
  "proxy": "",
  "log_level": 1,
  "modules_props": {}
}
PeratX commented 1 year ago

java -jar mcl.jar --update-package net.mamoe:mirai-core-all --channel maven-prerelease \ java -jar mcl.jar --update-package net.mamoe:mirai-console --channel maven-prerelease \ java -jar mcl.jar --update-package net.mamoe:mirai-console-terminal --channel maven-prerelease \

没有指定type=core

Simon-Chenzw commented 1 year ago

... thx