AppCrawler 修改 AppCrawler 源码后,打包 jar 包,无法加载主类 com.testerhome.appcrawler.AppCrawler

土豆 · 2017年09月05日 · 最后由 feilongjiangisme 回复于 2018年11月21日 · 3217 次阅读

修改了下 appcrawler 的源码,但是打包 jar 后,提示无法加载 com.testerhome.appcrawler.AppCrawler 。想问下@seveniruby 这个 scala 项目怎么打包才是正确的,网上的方式都试过了。

打包配置如下:

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 14 条回复 时间 点赞

我也是这样。😅

sbt assembly 就可以了。sbt 类似于 gradle,不过学会它不容易。。。

土豆 #12 · 2017年09月06日 Author

我单独安装了 sbt 进行编译,结果编译出来的,jar 包只有几百 K,没有把依赖加进去,而且也提示没有主清单,但解压 Jar 包里面是有主清单文件的。另外我看了你的 build.sbt 是有填写依赖的,不知道 sbt 为什么打包不进去。

土豆 #11 · 2017年09月06日 Author

不知是否要进入 project 进行编译,但是进入这个目录编译直接就报错了,提示 sbt 文件有问题。。不清楚你工程里的 project 目录和 src 目录之间是什么样的关系

土豆 回复

应该是缺少 scala runtime 环境吧?
与 java 不同,打成 jar 包,没有 runtime 调不起来。

scala 的不是用 jvm 运行的么?百度云盘下载的思寒打包好的 Jar 包,不需要什么 scala 环境。而且 appcrawler 的主类我在 idea 下编译是可以运行的,就是打包不成功很郁闷。

土豆 回复

你打的 jar,和思寒的 jar 大小有差异吗?

发现 testerhome 的 bug:复制过长的文章标题在搜索栏进行搜索,app 闪退。
复制为内容:appium+selenium+python web 自动化 / 手机自动化 [汇总] 分享 (适合初学)

土豆 回复

runtime 加到 cp 里应该就行了。 思寒那个用 sbt 编译的 应该带上了 runtime

构建成功了,不是确实 runtime 的问题,是构建方式的问题;构建的顺序是在执行目录下;先 sbt ---》然后再输入 assembly 就可以,自动编译打包。之前是 sbt package

我这不是 mac,在 intelliIDEA 上弄好 scala 环境,导入 appcrawler 功能,总是报错。各位是怎么解决的?

[info] Reapplying settings...
[info] Set current project to AppCrawler (in build file:/Users/dengwei/Documents/amap-client/crawler/AppCrawler/AppCrawler/)
[info] Applying State transformations org.jetbrains.sbt.CreateTasks from /Users/dengwei/Library/Application Support/IntelliJIdea2016.2/Scala/launcher/sbt-structure-1.0.jar
[error] java.lang.ClassNotFoundException: org.jetbrains.sbt.CreateTasks$
[error]         at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
[error]         at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
[error]         at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
[error]         at java.lang.Class.forName0(Native Method)
[error]         at java.lang.Class.forName(Class.java:348)
[error]         at sbt.internal.inc.ModuleUtilities$.getObject(ModuleUtilities.scala:20)
[error]         at sbt.BasicCommands$.$anonfun$call$5(BasicCommands.scala:187)
[error]         at scala.collection.TraversableLike.$anonfun$map$1(TraversableLike.scala:234)
[error]         at scala.collection.immutable.List.foreach(List.scala:389)
[error]         at scala.collection.TraversableLike.map(TraversableLike.scala:234)
[error]         at scala.collection.TraversableLike.map$(TraversableLike.scala:227)
[error]         at scala.collection.immutable.List.map(List.scala:295)
[error]         at sbt.BasicCommands$.$anonfun$call$2(BasicCommands.scala:187)
[error]         at sbt.Command$.$anonfun$applyEffect$4(Command.scala:125)
[error]         at sbt.Command$.$anonfun$applyEffect$2(Command.scala:121)
[error]         at sbt.MainLoop$.processCommand(MainLoop.scala:121)
[error]         at sbt.MainLoop$.$anonfun$next$2(MainLoop.scala:105)
[error]         at sbt.State$$anon$1.runCmd$1(State.scala:227)
[error]         at sbt.State$$anon$1.process(State.scala:233)
[error]         at sbt.MainLoop$.$anonfun$next$1(MainLoop.scala:105)
[error]         at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:16)
[error]         at sbt.MainLoop$.next(MainLoop.scala:105)
[error]         at sbt.MainLoop$.run(MainLoop.scala:98)
[error]         at sbt.MainLoop$.$anonfun$runWithNewLog$1(MainLoop.scala:76)
[error]         at sbt.io.Using.apply(Using.scala:22)
[error]         at sbt.MainLoop$.runWithNewLog(MainLoop.scala:70)
[error]         at sbt.MainLoop$.runAndClearLast(MainLoop.scala:52)
[error]         at sbt.MainLoop$.runLoggedLoop(MainLoop.scala:37)
[error]         at sbt.MainLoop$.runLogged(MainLoop.scala:29)
[error]         at sbt.StandardMain$.runManaged(Main.scala:104)
[error]         at sbt.xMain.run(Main.scala:71)
[error]         at xsbt.boot.Launch$$anonfun$run$1.apply(Launch.scala:109)
dengwei729 回复

你是用的 idea 的打包编译么?用那个不行,要在控制台先 sbt ---》然后再输入 assembly 就可以。具体参考http://blog.sina.com.cn/s/blog_c3dbcdab0102w3v9.html

土豆 回复

你用 sbt assembly 打出的 jar 包能运行吗,我这运行报 NullPointerException

土豆 回复

加下您的 qq,我也是用 idea 环境编译不了。问下您是怎么解决的

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册