小编Chr*_*ris的帖子

将visualvm连接到在gradle包装器中运行的java应用程序

我正在尝试将visualvm连接到我的java应用程序,该应用程序是使用jetty和gradle构建的。该应用程序在本地主机上运行,​​因此不需要远程连接。但是,每当我尝试连接到应用程序时,我只是连接到 gradle 包装器,因此无法使用 visualvm 分析我的应用程序。在这里搜索和谷歌搜索不足。

到目前为止,我已经尝试将以下行添加到我的 gradle.build 文件中

-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=9010
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Djava.rmi.server.hostname=localhost')
Run Code Online (Sandbox Code Playgroud)

我还尝试从 jetty-jmx.xml 中取消注释以下内容

<Call name="createRegistry" class="java.rmi.registry.LocateRegistry">                                                                                 
<Arg type="java.lang.Integer"><SystemProperty name="jetty.jmxrmiport" default="1099"/></Arg>                                                        
<Call name="sleep" class="java.lang.Thread">                                                                                                        
   <Arg type="java.lang.Integer">1000</Arg>                                                                                                         
</Call>                                                                                                                                             
Run Code Online (Sandbox Code Playgroud)

<New id="ConnectorServer" class="org.eclipse.jetty.jmx.ConnectorServer">                                                                              
<Arg>                                                                                                                                               
  <New class="javax.management.remote.JMXServiceURL">                                                                                               
    <Arg type="java.lang.String">rmi</Arg>                                                                                                          
    <Arg type="java.lang.String" />                                                                                                                 
    <Arg type="java.lang.Integer"><SystemProperty name="jetty.jmxrmiport" default="1099"/></Arg>                                                    
    <Arg type="java.lang.String">/jndi/rmi://<SystemProperty name="jetty.jmxrmihost" default="localhost"/>:<SystemProperty name="jetty.jmxrmiport"default="1099"/>/jmxrmi</Arg>                                                                                                                           
  </New>                                                                                                                                            
</Arg>                                                                                                                                              
<Arg>org.eclipse.jetty.jmx:name=rmiconnectorserver</Arg>                                                                                            
<Call name="start" />                                                                                                                               
Run Code Online (Sandbox Code Playgroud)

java visualvm jetty jvisualvm gradle

7
推荐指数
0
解决办法
1149
查看次数

Nohup:无法与控制台分离

我有一个可以在Linux和Mac OS X上运行的bash脚本。脚本的某一行与Linux中的一样,但在OS X中不起作用。

nohup <utility> <arg> > output.txt 2> error.txt </dev/null &
Run Code Online (Sandbox Code Playgroud)

当bash脚本在Linux中运行时,它就像一个超级按钮。但是,在OS X中运行bash脚本时,出现错误

nohup: can't detach from console: Inappropriate ioctl for device
Run Code Online (Sandbox Code Playgroud)

我已经做了很多搜索,但是还没有找到合适的答案来说明为什么这样。

正在执行的脚本早于退出<utility>,这就是为什么(据我所知)我需要使用的原因nohup。但是,我已经进行了一些测试,nohup从bash脚本的行中删除似乎可以解决问题,因为这两个系统上的实用程序都将启动,并且即使脚本退出后仍可以继续运行。

linux macos bash nohup

5
推荐指数
1
解决办法
3708
查看次数

使用`expect`滚动并接受许可协议

我有一堆Mac刚刚更新了Xcode,需要接受EULA协议.我试图通过脚本来做到这一点.

#!/usr/bin/expect
set timeout 15
spawn sudo xcodebuild -license
expect {
    "*License.rtf'\n" {  # Press Enter to view agreement
     send "\r"
    }
    timeout {
        send_user "\nFailed\n";
        exit 1
    }
}
expect {
    "Software License Agreements Press 'space' for more, or 'q' for quit" {
        send_user " ";
        exp_continue;
    }
    "By typing 'agree' you are agreeing" {
        send_user "agree\r"
    }
    timeout {
        send_user "\nTimeout 2\n";
        exit 1
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,它永远不会超过第一个期望(也就是说,它永远不会为'Enter'发送"\ r".这是输出:

$ ./test.sh
spawn sudo xcodebuild -license

You have not agreed …
Run Code Online (Sandbox Code Playgroud)

macos xcode expect

5
推荐指数
2
解决办法
2271
查看次数

标签 统计

macos ×2

bash ×1

expect ×1

gradle ×1

java ×1

jetty ×1

jvisualvm ×1

linux ×1

nohup ×1

visualvm ×1

xcode ×1