首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sbt / javaAgents / force jar-具有-依赖关系

Sbt / javaAgents / force jar-具有-依赖关系
EN

Stack Overflow用户
提问于 2020-04-20 10:00:01
回答 1查看 502关注 0票数 2

我想将"org.kohsuke" % "file-leak-detector" % "1.13" java代理添加到我的sbt配置中。

代码语言:javascript
复制
//plugins.sbt
addSbtPlugin("com.lightbend.sbt" % "sbt-javaagent" % "0.1.5")

//build.sbt
enablePlugins(SbtWeb, PlayScala, DebianPlugin, JavaAgent)
javaAgents += "org.kohsuke" % "file-leak-detector" % "1.13"

但这在运行时失败了。

代码语言:javascript
复制
Failed to find Premain-Class manifest attribute in /usr/share/someApp/bin/../file-leak-detector/file-leak-detector-1.13.jar
Error occurred during initialization of VM
agent library failed to init: instrument

我发现需要有依赖项的jar才能以javaAgent的形式运行它,但是如果理论上可以从https://repo1.maven.org/maven2/org/kohsuke/file-leak-detector/1.13/下载它,我不知道如何与sbt-javaagent插件一起使用它。

我也尝试过:

代码语言:javascript
复制
javaAgents += ("org.kohsuke" % "file-leak-detector" % "1.13") from "https://repo1.maven.org/maven2/org/kohsuke/file-leak-detector/1.13/file-leak-detector-1.13-jar-with-dependencies.jar"

但没有运气。任何想法如何强迫sbt-javaagent插件使用file-leak-detector-1.13-jar-with-dependencies.jar而不是file-leak-detector-1.13-jar

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-20 10:52:16

我认为您使用from提供显式URL是正确的做法

如果您的项目需要存储库中不存在的依赖项,则可以按以下方式指定其jar的直接URL: libraryDependencies += "slinky“% "slinky”% "2.1“来自"https://slinky2.googlecode.com/svn/artifacts/2.1/slinky.jar

当我提供这样的显式作用域时,它似乎在我的机器上工作。

代码语言:javascript
复制
javaAgents += JavaAgent(
  "org.kohsuke" % "file-leak-detector-1.13-jar-with-dependencies" % "1.13" % Runtime from "https://repo1.maven.org/maven2/org/kohsuke/file-leak-detector/1.13/file-leak-detector-1.13-jar-with-dependencies.jar",
  arguments = "help"
)

注:% Runtime。我认为它的工作是因为arguments = "help"是受尊重的,sbt run输出。

代码语言:javascript
复制
sbt:sbt-javaagents-leka> run
[info] running (fork) example.Hello
[error] File leak detector arguments (to specify multiple values, separate them by ',':
[error]   help          - show the help screen.
[error]   trace         - log every open/close operation to stderr.
[error]   trace=FILE    - log every open/close operation to the given file.
[error]   error=FILE    - if 'too many open files' error is detected, send the dump here.
[error]                   by default it goes to stderr.
[error]   threshold=N   - instead of waiting until 'too many open files', dump once
[error]                   we have N descriptors open.
[error]   http=PORT     - Run a mini HTTP server that you can access to get stats on demand
[error]                   Specify 0 to choose random available port, -1 to disable, which is default.
[error]   strong        - Don't let GC auto-close leaking file descriptors
[error]   listener=S    - Specify the fully qualified name of ActivityListener class to activate from beginning
[error]   dumpatshutdown- Dump open file handles at shutdown
[error]   excludes=FILE - Ignore files opened directly/indirectly in specific methods.
[error]                   File lists 'some.pkg.ClassName.methodName' patterns.

另外,如果我设置了arguments = "threshold=1",它就会输出

代码语言:javascript
复制
[info] running (fork) example.Hello
[error] File leak detector installed
[error] 2 descriptors are open
[error] #1 /private/var/folders/y7/33z7gnqn1nl2vwzn26j59xy9rwcgwx/T/sbt_412c7765/target/edca7f33/f7a642d3/scala-library-2.13.1.jar by thread:main on Mon Apr 20 11:51:20 BST 2020
...
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61319739

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档