如果Java应用程序不在预定义的目录中,如何防止(以编程方式)启动它? [复制]
Posted
技术标签:
【中文标题】如果Java应用程序不在预定义的目录中,如何防止(以编程方式)启动它? [复制]【英文标题】:how to prevent (programmatically) a java application from starting if it's not in a pre-defined directory? [duplicate] 【发布时间】:2011-11-28 23:40:23 【问题描述】:如果 Java 应用程序不在预定义的目录中,如何(以编程方式)阻止它启动?
例子:
我有 application.jar,我想让它仅在它位于“C:\runnable”目录中时才可运行,否则应用程序将退出。
有什么想法吗?
【问题讨论】:
'我想让它仅在位于 "C:\runnable" 中时才可运行' 所以你希望它只在 Windows 机器上运行?这个非同寻常的(愚蠢的)要求的目的是什么? “有什么想法吗?”抛开你打算用来实现目标的策略,并描述目标。 这只是一个例子。我什至没有尝试提出任何申请,我从不向公众公开我的想法。 “这只是一个例子” 很差,因为它未能传达目标。 “我从不向公众公开我的想法。”(翻白眼。)如果你的想法有任何价值,它会在公开后 24 小时内被窃取,即使没有逆向工程(例如反编译)代码。 “一个可怜的人,因为它未能传达目标” 错了!因为“Radu C”给了我完美的答案。 【参考方案1】:System.getProperty("user.dir").equals("C:\\runnable")
【讨论】:
【参考方案2】: final String classLocation = GetClassLocation.class.getName().replace('.', '/')
+ ".class";
->http://www.roseindia.net/java/java-get-example/get-class-location.shtml
【讨论】:
【参考方案3】:也可以试试-
System.out.println(new File (".").getCanonicalPath()); // Current Path
System.out.println(System.getProperty("user.dir")); // Path from where java is executed
【讨论】:
【参考方案4】:如果实际标准是 jar 文件是否在给定位置,则不能依赖系统属性,而必须向 JVM 询问 jar 文件的位置,然后做出相应反应。
有关如何确定给定类的字节码位置的说明,请参阅Determine location of a java class loaded by Matlab。然后为你知道在罐子里的一门课做这件事,然后从那里继续。
【讨论】:
以上是关于如果Java应用程序不在预定义的目录中,如何防止(以编程方式)启动它? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何在横向上调整自定义 UITableView 分隔符并防止消失