我无法编译和运行我的Java代码,目的是为了让我能够将Java与Vensim(一个仿真build模包)的共享对象连接起来。 下面的代码编译没有错误: javac -d . -cp ./apache-log4j-1.2.16/log4j-1.2.16.jar:./vensim.jar SpatialModel.java VensimHelper.java VensimException.java VensimContextRepository.java 但是,当我尝试运行以下: java -cp ./apache-log4j-1.2.16/log4j-1.2.16.jar:./vensim.jar SpatialModel vars 我得到以下错误:“错误:无法find或加载主类SpatialModel”。 我的SpatialModel.java代码确实包含了一个'main'方法(下面),所以我不确定这个问题是什么 – 任何人都可以帮我一下吗? 谢谢。 import java.io.File; import java.text.NumberFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import org.apache.log4j.Logger; public class SpatialModel { private VensimHelper vh; public static final String DLL_LIBNAME_PARAM = "vensim_lib_nam"; public static final String MODEL_PATH_PARAM = "vensim_model_path"; […]
我正在尝试使用Eclipse来初次体验Android开发。 我试图运行Eclipse时遇到了这个问题,仅在几分钟前安装了4.2版本。 在第一次尝试启动没有任何参数的Eclipse来指定Java虚拟机时,我收到一条错误消息,说它找不到在Eclipse文件夹中名为javaw.exe的Java虚拟机,所以我find了Java的安装位置,并将该位置指定为快捷方式的目标中的参数。 现在我得到一个不同的错误,“Java已经启动,但返回退出代码= 13”。 类似的问题似乎表明,这是一个32位/ 64位的冲突,但我99%的积极性,我下载了Eclipse和Java(RC 7u5)的64位版本,我select,因为我有64位Windows 7的。 如果有人知道如何确认我的Eclipse和Java是64位的,那将是值得赞赏的。 如果你认为我的问题是不同的,请帮忙! 请尽量说清楚,因为我对Eclipse和Java完全陌生。 快捷方式目标:“C:\ Program Files \ Eclipse-SDK-4.2-win32-x86_64 \ eclipse \ eclipse.exe”-vm“C:\ Program Files(x86)\ Java \ jre7 \ bin \ javaw.exe” 完整的错误代码…: Java was started but returned exit code=13 C:\Program Files (x86)\Java\jre7\bin\javaw.exe -Xms40m -Xmx512m -XX:MaxPermSize=256m -jar C:\Program Files\Eclipse-SDK-4.2-win32-x86_64\eclipse\\plugins/org.eclipse.equinox.launcher_1.30v20120522-1813.jar -os win32 -ws win32 -arch x86_64 -showsplash C:\Program […]
是否有一个好的可用(标准Java)数据结构来表示Java中的树? 具体来说,我需要表示以下内容: 任何节点上的树可以有任意数量的子节点 每个节点(在根之后)只是一个string(其子节点也是string) 我需要能够得到所有的孩子(某种列表或string数组)给定一个inputstring表示给定的节点 有没有可用的结构,或者我需要创build自己的(如果这样的实施build议将是伟大的)。
每当一个关于Java同步的问题popup时,有些人非常希望指出应该避免synchronized(this) 。 相反,他们声称,locking一个私人参考是首选。 一些给定的原因是: 一些邪恶的代码可能会偷你的锁 (非常stream行这一个,也有一个“意外”的变种) 同一类中的所有同步方法使用完全相同的锁,这会降低吞吐量 你(不必要地)暴露太多的信息 包括我在内的其他人认为synchronized(this)是一个习惯用法(在Java库中也是如此),是安全的,并且很好理解。 它不应该被避免,因为你有一个错误,你不知道你的multithreading程序正在发生什么。 换句话说:如果适用,那么就使用它。 我有兴趣看到一些真实世界的例子(没有foobar的东西),避免lockingthis是最好的时候synchronized(this)也可以做这项工作。 因此: 你应该总是避免synchronized(this)并用一个私人引用上的锁代替它? 一些更多的信息(更新为答案): 我们正在谈论实例同步 同时考虑隐式( synchronized方法)和显式forms的synchronized(this) 如果您引用Bloch或其他权威人士的话,请不要忽略您不喜欢的部分(例如Effective Java,线程安全上的项目: 通常它是实例本身的锁,但也有例外)。 如果你的locking需要粒度,而不是synchronized(this)提供,那么synchronized(this)不适用,所以这不是问题
在实验/快速和肮脏的模拟阶段的发展过程中,Maven2正在让我疯狂。 我有一个pom.xml文件,它定义了我想要使用的Web应用程序框架的依赖关系,并且可以从该文件快速生成启动项目。 但是,有时我想链接到一个尚未定义pom.xml文件的第三方库,而不是手工创build第三方库的pom.xml文件并安装它,并将依赖关系添加到我的pom.xml ,我只想告诉Maven:“除了我定义的依赖项之外,还包括任何在/lib jar”。 这似乎应该是简单的,但如果是这样,我错过了一些东西。 任何指针如何做到这一点非常感谢。 简而言之,如果有一个简单的方法可以将maven指向/lib目录,并且可以轻松创build一个pom.xml并将所有封闭的jar映射到一个单独的依赖项,然后我可以一举命名/安装并链接到该目录。也足够了。
我的应用程序应该将文件保存到某个地方,当您将手机/平板电脑连接到计算机时,可以通过系统文件资源pipe理器查看这些文件。 这是我实现文件写作的方式: protected String mDir = Environment.DIRECTORY_DOCUMENTS; protected File mPath = Environment.getExternalStoragePublicDirectory(mDir); protected void writeLogFile(String filename) { File f = new File(mPath, filename + ".txt"); f.getParentFile().mkdirs(); try (BufferedWriter bw = new BufferedWriter(new FileWriter(f, false))) { // Details omitted. } catch (Exception e) { e.printStackTrace(); return; } makeText("Wrote " + f.getAbsolutePath()); } 这是我将索尼Xperia Z4平板电脑连接到Windows时所看到的(注意缺失的文档文件夹): 这是写入文件的目录(使用上面的实现): 我的实现有什么问题?
(这篇文章是一个典型的问题 ,下面提供了一个示例答案。) 我试图反序列化一些JSON内容到Gson#fromJson(String, Class)的自定义POJOtypes。 这段代码 import com.google.gson.Gson; public class Sample { public static void main(String[] args) { String json = "{\"nestedPojo\":[{\"name\":null, \"value\":42}]}"; Gson gson = new Gson(); gson.fromJson(json, Pojo.class); } } class Pojo { NestedPojo nestedPojo; } class NestedPojo { String name; int value; } 抛出以下exception Exception in thread "main" com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but […]
我有一个名为Media的类,它有一个名为setLoanItem的方法: public void setLoanItem(String loan) { this.onloan = loan; } 我试图从一个名为GUI的类以如下方式调用此方法: public void loanItem() { Media.setLoanItem("Yes"); } 但是我得到错误 非静态方法setLoanItem(java.lang.String)不能从静态上下文中引用 我只是简单地试图将Media类中的variables从GUI类更改为“Yes”。 我看过其他相同的错误信息,但没有点击!
我有这个代码读取目录中的所有文件。 File textFolder = new File("text_directory"); File [] texFiles = textFolder.listFiles( new FileFilter() { public boolean accept( File file ) { return file.getName().endsWith(".txt"); } }); 它工作很好。 它用所有以“text_directory”目录中的“.txt”结尾的文件填充数组。 如何在 JAR文件中以类似的方式读取目录的内容? 所以我真正想做的是列出我的JAR文件中的所有图像,所以我可以加载它们: ImageIO.read(this.getClass().getResource("CompanyLogo.png")); (这是因为“CompanyLogo”是“硬编码”,但JAR文件中的图像数量可以是10到200个可变长度)。 编辑 所以我想我的主要问题是:如何知道我的主要类的JAR文件的名称 ? 当然我可以使用java.util.Zip来读取它。 我的结构是这样的: 他们是这样的: my.jar!/Main.class my.jar!/Aux.class my.jar!/Other.class my.jar!http://img.dovov.comimage01.png my.jar!http://img.dovov.comimage02a.png my.jar!http://img.dovov.comimwge034.png my.jar!http://img.dovov.comimagAe01q.png my.jar!/META-INF/manifest 现在我可以加载例如“images / image01.png”使用: ImageIO.read(this.getClass().getResource("images/image01.png)); 但只是因为我知道文件名,其余的我必须dynamic加载它们。
我有下面的代码示例。 因此,您可以input一个命令到bash shell,即echo test ,并将结果回显。 但是,在第一次阅读之后。 其他输出stream不起作用? 为什么这样做还是我做错了什么? 我的最终目标是创build一个Threaded计划任务,定期执行一个命令到/ bash,这样OutputStream和InputStream将不得不协同工作,而不是停止工作。 我也遇到了错误java.io.IOException: Broken pipe任何想法? 谢谢。 String line; Scanner scan = new Scanner(System.in); Process process = Runtime.getRuntime ().exec ("/bin/bash"); OutputStream stdin = process.getOutputStream (); InputStream stderr = process.getErrorStream (); InputStream stdout = process.getInputStream (); BufferedReader reader = new BufferedReader (new InputStreamReader(stdout)); BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(stdin)); […]