我正在编写服务器程序和客户端程序。我将服务器代码文件命名为server.java。客户端从不同的计算机运行。客户端可以做的一件事就是将文件上传到服务器。我希望服务器将上传的文件存储在与server.java程序文件位于同一目录的文件夹中。所以我使用了以下代码:
String server_files_location = getClass().getProtectionDomain().getCodeSource().getLocation().getPath();
这确实奏效了。但是我必须在我写的所有不同类中分别声明这个变量。我想让它成为一个全局字符串变量,这样我每次添加新的类或方法时都不必声明它。
所以在程序开始时我尝试了:
public static String server_files_location = getClass().getProtectionDomain().getCodeSource().getLocation().getPath();
这给我一个错误Cannot make a static reference to the non-static method getClass() from the type Object
。
我怎样才能让这个变量全局可访问?
答案 0 :(得分:3)
使用您声明变量的类中的类文字。
public static String server_files_location =
YourClass.class.getProtectionDomain().getCodeSource().getLocation().getPath();
考虑变量final
,如果它是一个常数并且不会改变。另外,正常的Java变量命名约定会说以驼峰为例命名变量,例如: serverFilesLocation
,或者如果它是常数,则在所有大写字母中,例如SERVER_FILES_LOCATION
。
答案 1 :(得分:0)
在变量声明中删除static
。如果变量和实例都是公共的,那么所有实例都能够访问一个实例的副本。