小编Den*_*tta的帖子

如何获取运行java程序的路径

有没有办法获取正在运行的java程序的主类的路径.

结构是

D:/
|---Project
       |------bin
       |------src
Run Code Online (Sandbox Code Playgroud)

我希望得到这样的道路D:\Project\bin\.

我试过System.getProperty("java.class.path");但问题是,如果我跑的话

java -classpath D:\Project\bin;D:\Project\src\  Main

Output 
Getting : D:\Project\bin;D:\Project\src\
Want    : D:\Project\bin
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?



=====编辑=====

得到了解决这里

解决方案1(作者 Jon Skeet)

package foo;

public class Test
{
    public static void main(String[] args)
    {
        ClassLoader loader = Test.class.getClassLoader();
        System.out.println(loader.getResource("foo/Test.class"));
    }
}
Run Code Online (Sandbox Code Playgroud)

打印出来的:

file:/C:/Users/Jon/Test/foo/Test.class
Run Code Online (Sandbox Code Playgroud)


解决方案2(由 Erickson提供)

URL main = Main.class.getResource("Main.class");
if (!"file".equalsIgnoreCase(main.getProtocol()))
  throw new IllegalStateException("Main class is not stored in a file.");
File path = new File(main.getPath());
Run Code Online (Sandbox Code Playgroud)

请注意,大多数类文件都组装成JAR文件,因此在每种情况下都不起作用(因此 …

java

79
推荐指数
3
解决办法
26万
查看次数

Visual Studio 2012 Natvis跳过IndexListItems

我正在为Qt类创建一个natvis文件,我遇到了一个问题.

为了可视化QHash对象,我创建了以下两种类型:

<Type Name="QHashNode&lt;*,*&gt;">
    <DisplayString Condition="next->next == 0">{{ key={key} value={value} h={h}}}</DisplayString>
    <DisplayString>{{ key={key} value={value} h={h} withCollision }}</DisplayString>
    <Expand>
        <Item Name="NextNode">reinterpret_cast&lt;QHashNode&lt;$T1,$T2&gt; *&gt;(next)</Item>
    </Expand>
</Type>

<Type Name="QHash&lt;*,*&gt;">
    <DisplayString>{{ size={d->size} buckets={d->numBuckets} }}</DisplayString>
    <Expand>
        <IndexListItems>
            <Size>d->numBuckets</Size>
            <ValueNode Condition="reinterpret_cast&lt;QHashNode&lt;$T1,$T2&gt; *&gt;(d->buckets[$i]) != e">reinterpret_cast&lt;QHashNode&lt;$T1,$T2&gt; *&gt;(d->buckets[$i])</ValueNode>
        </IndexListItems>
    </Expand>
</Type>
Run Code Online (Sandbox Code Playgroud)

它几乎可以工作,但由于QHash在内存中不连续,因此存在大量无效条目.条件

reinterpret_cast&lt;QHashNode&lt;
$T1,$T2&gt; *&gt;(d->buckets[$i]) != e 
Run Code Online (Sandbox Code Playgroud)

已经过滤掉那些无效的,但它们仍然显示为<Unable to display value>.

有谁知道是否有办法完全跳过这些条目?

我从来没有真正使用过autoexp.dat文件,这是旧方法,但是在查看安装了Qt-plugin的文件时,我认为该语句

#switch ($e.next != 0) #case 1 (
    $e
)
Run Code Online (Sandbox Code Playgroud)

确切地说,所以我希望有可能在natvis文件中做到这一点吗?

如果有人感兴趣,我可以给你natvis文件,但我到目前为止只有QString,QByteArray,QList,QVector,QMap和(有问题的)QHash.

c++ qt visual-studio-2012

49
推荐指数
1
解决办法
2591
查看次数

MBean和MXBean之间的区别

我有关于MBeanMXBean的以下问题:

  1. MBeanMXBean有什么区别?
  2. MBeanMXBean的用例是什么?

java jmx mbeans

48
推荐指数
2
解决办法
2万
查看次数

Visual Studio 2010中的Java?

有没有办法在Visual Studio 2010中管理/调试/编译Java项目?

在您回答之前,请阅读本主题.

java ide visual-studio-2010 visual-studio

32
推荐指数
5
解决办法
7万
查看次数

生成多个随机(x,y)坐标,不包括重复?

我想生成一个从0到2500的束(x,y)坐标,它排除彼此在200之内的点而不递归.

现在我检查所有以前的值列表,看看是否有足够远的所有值.这是非常低效的,如果我需要生成大量的点,它需要永远.

那我该怎么做呢?

python random math coordinates

24
推荐指数
2
解决办法
3万
查看次数

通过终端向另一个登录用户BASH编程发送消息

您是否有建议如何编写脚本来检测是否记录了脚本第一个参数中指定的用户?

如果您已登录,请为他提供向用户写入消息的机会.随后,由于发送的消息将提供编写另一个报告或完成脚本工作的机会.

在没有用户登录的情况下,消息""未知......

谢谢.

bash message

22
推荐指数
3
解决办法
6万
查看次数

创建用于处理文件的自定义grunt任务

我正在尝试编写一个grunt任务,它将遍历一组输入文件并对每个文件运行转换.让我们假设输入文件由*.in每个输入文件给出,任务将创建一个.out文件.

从我读到的,似乎配置应该看起来像这样

grunt.initConfig({
    my_task: {
        src: 'C:/temp/*.in',
        dest: 'C:/temp/output/*.out'
    }
});
Run Code Online (Sandbox Code Playgroud)

任务注册应该是:

grunt.registerTask('my_task', 'iterate files', function() {
    //iterate files.
});
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚如何使grunt发送给我文件列表并迭代它们.

知道怎么做吗?

javascript gruntjs

14
推荐指数
1
解决办法
1万
查看次数

检查一些exe程序是否在Windows上运行

如何在Windows上检查某个.exe程序是否正在运行(正在进行中)?

我正在制作更新一个.exe程序的java应用程序.因此,如果某个客户端使用该exe程序,我的应用程序会要求关闭exe程序,并在关闭后自动替换新的.exe文件.

java exe process

13
推荐指数
1
解决办法
4万
查看次数

如何在子类中访问超类的"protected static"变量,其中子类位于不同的包中..?

这是同一个问题的略微详细版本.

我们无法访问子类中受保护的变量(超类),其中子类位于不同的包中.我们只能访问supeclass的继承变量.但是如果我们将修饰符更改为'protected static',那么我们也可以访问超类的变量.为什么会那样.?

这是我试图解释的代码片段.

package firstOne;

public class First {
    **protected** int a=7;
}

package secondOne;

import firstOne.*;

public class Second extends First {
    protected int a=10; // Here i am overriding the protected instance variable

    public static void main (String [] args){
        Second SecondObj = new Second();
        SecondObj.testit();
    }
    public void testit(){
        System.out.println("value of A in Second class is " + a);
        First b = new First();
        System.out.println("value in the First class" + b.a ); // Here compiler throws …
Run Code Online (Sandbox Code Playgroud)

java

10
推荐指数
1
解决办法
5902
查看次数

jscape sftp上传保留文件权限

jscape sftp用来传输文件

com.jscape.inet.sftp.Sftp

Sftp sftpSession = null;

// after the required step to connect
// through SshParameters

sftpSession.setDir(remotedirectory);
sftpSession.upload(localFile, remoteFile);
Run Code Online (Sandbox Code Playgroud)

现在,这段代码正在传输文件,那部分OK.但是文件权限在远程机器中被更改(它变为644).

in local machine:    
-rw-rw-r-- 1 oracle dba  356 Jun 30 03:33 file1.test
-rwxrw-r-x 1 oracle dba  462 Jun 30 03:35 file2.test

in remote machine:
-rw-r--r-- 1 oracle dba  356 Jun 30 03:49 file1.test
-rw-r--r-- 1 oracle dba  462 Jun 30 03:49 file2.test
Run Code Online (Sandbox Code Playgroud)

我看到以下方法来更改远程文件的权限,

com.jscape.inet.sftp.Sftp.setFilePermissions(java.lang.String remoteFile, int permissions)

我的问题是,

  • 做的com.jscape.inet.sftp.Sftp.upload方法只能这样,上传的文件不保留的权限?
  • 有没有办法保留权限,而不setFilePermissions明确使用方法?

java ftp upload sftp

7
推荐指数
1
解决办法
446
查看次数