tiangalon / dy_danmaku_java

一个用Java编写的用于获取抖音直播间弹幕信息的工具
8 stars 0 forks source link

打包jar后Main.class.getClassLoader().getResource("./Signature.exe").getPath()报错 #5

Open SoYoungxSoWhat opened 2 months ago

SoYoungxSoWhat commented 2 months ago

大佬我有台老电脑性能不太好打开idea卡顿,尝试打包了一个带依赖的jar,发现Signature.exe会在jar的根目录下,这时候Main.class.getClassLoader().getResource("./Signature.exe").getPath()会报错。 ai搜了搜solution不太好使,请问有没有遇到过类似问题。只找到一个this.getClass().getResourceAsStream()但是这个是读取文件流,不是获取路径。难受哈哈。

SoYoungxSoWhat commented 2 months ago

E:\dy_danmaku_java-master\target>java -jar ./dy_danmaku-1.0-SNAPSHOT.jar 7月 17, 2024 10:12:55 上午 org.apache.http.client.protocol.ResponseProcessCookies processCookies 警告: Invalid cookie header: "Set-Cookie: ttwid=1%7CPmEcCSrhglTWmDVXyXlCB3nnc-VkGL7IC0PW1m-FAM0%7C1721182375%7C01cfe73c5c3afab68419e566c029edc9274bea8acb17e8ae72d97a87f5d8f2a9; Domain=.douyin.com; Path=/; Expires=Sat, 12 Jul 2025 02:12:55 GMT; HttpOnly; SameSite=None; Secure=true". Invalid 'expires' attribute: Sat, 12 Jul 2025 02:12:55 GMT java.io.IOException: Cannot run program "file:/E:/dy_danmaku_java-master/target/dy_danmaku-1.0-SNAPSHOT.jar!/Signature.exe": CreateProcess error=2, 系统找不到指定的文件。 at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1170) at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1089) at java.base/java.lang.Runtime.exec(Runtime.java:681) at java.base/java.lang.Runtime.exec(Runtime.java:491) at java.base/java.lang.Runtime.exec(Runtime.java:366) at com.DyDanmaku.Main.sign(Main.java:20) at com.DyDanmaku.Main.main(Main.java:60) Caused by: java.io.IOException: CreateProcess error=2, 系统找不到指定的文件。 at java.base/java.lang.ProcessImpl.create(Native Method) at java.base/java.lang.ProcessImpl.(ProcessImpl.java:500) at java.base/java.lang.ProcessImpl.start(ProcessImpl.java:159) at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1126) ... 6 more java.net.ProtocolException: Expected HTTP 101 response but was '200 OK' at okhttp3.internal.ws.RealWebSocket.checkUpgradeSuccess$okhttp(RealWebSocket.kt:196) at okhttp3.internal.ws.RealWebSocket$connect$1.onResponse(RealWebSocket.kt:167) at okhttp3.RealCall$AsyncCall.run(RealCall.kt:138) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) at java.base/java.lang.Thread.run(Thread.java:1570)

SoYoungxSoWhat commented 2 months ago

newscreen699668906

tiangalon commented 2 months ago

我当时写的时候没有考虑打包这个问题,最初设想是直接在后端部署js的,打包这个exe纯粹是为了跑起来代码 如果你急用的话就先把Signature.exe拿到jar包外面去调用,打包的问题我后续有时间再去适配一下

SoYoungxSoWhat commented 2 months ago

Owner 妙啊!这么简单啊哈哈,直接写死绝对路径,我想复杂钻牛角尖了哈哈