我正在使用Windows 7 Ultimate 64位版本和带有Android插件的Eclipse 3.5.每次我创建一个新项目并尝试发布它时,我都会收到如下错误:
[2010-02-15 22:48:10 - EPG3]Uploading EPG3.apk onto device 'emulator-5554' [2010-02-15 22:48:15 - EPG3]Failed to upload EPG3.apk on device 'emulator-5554' [2010-02-15 22:48:15 - EPG3]java.io.IOException: Unable to upload file: timeout [2010-02-15 22:48:15 - EPG3]Launch canceled!
模拟器工作得很好,adb可以看到它,我甚至可以从它进行logcat,但是它不能从中推送或拉出任何东西.logcat中没有任何内容表明模拟器甚至收到任何命令.如果我打开或关闭防火墙,或者我尝试调用adb install来绕过插件,则无关紧要.即使是空白的应用也没有任何作用.
有任何想法吗?
我在 Eclipse 中使用了 m2eclipse 插件,以便我可以导入 Maven 项目。该插件读取 pom.xml 并以 Eclipse 友好的方式整理项目中的依赖项,因此我不会查看大量损坏的引用和错误。
我使用 Eclipse 进行代码开发,但是我通常从命令行构建项目,例如“mvn clean install”。
不幸的是,当我这样做时,m2eclipse 检测到磁盘活动并尝试重建工作区。这会干扰命令行构建,有时会导致竞争条件。例如,命令行可能处于清理阶段但失败,因为它试图删除在工作区重建期间锁定的文件或目录。除了工作区重建非常慢之外,在失败的构建和浪费的 CPU 之间,我的构建过程比应有的时间长 2-3 倍。
不使用 Eclipse(例如使用 Netbeans)或禁用 m2eclipse 不是一个选项。除了这种行为,它是一个有用的插件。
所以我的问题是,如何阻止 m2eclipse 一直重建工作区?我可以调用手动刷新并以其他方式禁用此行为吗?
我有一个WizardDialog包含许多页面的 SWT 。当这个对话框第一次打开时,我必须检查一些条件,如果满足这些条件,我需要在新打开的对话框上显示一个弹出窗口。
所以我有这个代码来监听SWT.Show事件。事件侦听器响应以SWT.Show进行其测试并显示一个消息框:
final WizardDialog dialog = new WizardDialog(shell, wizard);
dialog.setTitle("New Wizard");
dialog.create();
dialog.getShell().addListener(SWT.Show, new Listener()
{
private boolean firstShowing = true;
@Override
public void handleEvent(Event event)
{
if (firstShowing && someConditionExists())
{
MessageBox messageBox = new MessageBox(dialog.getShell(), SWT.OK
| SWT.ICON_WARNING);
messageBox.setMessage("Test");
messageBox.open();
firstShowing = false;
}
}
});
dialog.open();
Run Code Online (Sandbox Code Playgroud)
除了它被称为太快了!调用处理程序时对话框不可见。我的消息框出现在对话框可见之前,并且对话框仅在我关闭消息框时出现。
很明显,这SWT.Show是不可靠的,至少在Window我运行它的地方是这样。我也尝试将此代码放入ShellListener激活中,但这甚至发生在SWT.Show上面的示例之前。
那么当对话框可见时如何可靠地显示消息框?
计划 B 是一个基于脏定时器的黑客,其中一个定时器被设置为在未来 200 毫秒内触发,并希望它在对话框可见时触发,但显然这可能会引入它自己的问题。
我有一个使用OpenGL ES 2.0的Android应用程序.我需要从数组中绘制10条线,每条线由起点和终点描述.所以有10行= 20点= 60浮点值.没有任何点被连接,因此数组中的每对点与其他点无关,因此我使用GL_LINES绘制.
我通过将值放入浮点缓冲区并调用一些这样的帮助程序代码来绘制它们:
public void drawLines(FloatBuffer vertexBuffer, float lineWidth,
int numPoints, float colour[]) {
GLES20.glLineWidth(lineWidth);
drawShape(vertexBuffer, GLES20.GL_LINES, numPoints, colour);
}
protected void drawShape(FloatBuffer vertexBuffer, int drawType,
int numPoints, float colour[]) {
// ... set shader ...
GLES20.glDrawArrays(drawType, 0, numPoints);
}
Run Code Online (Sandbox Code Playgroud)
drawLines采用浮动缓冲区(60个浮点数),线宽,点数(20)和4个浮点颜色值数组.我没有显示着色器设置代码,但它基本上将颜色变量暴露给统一的uColour值.
拾取uColour的片段着色器只是将其直接插入输出.
/* Fragment */
precision mediump float;
uniform vec4 uColour;
uniform float uTime;
void main() {
gl_FragColor = uColour;
}
Run Code Online (Sandbox Code Playgroud)
顶点着色器:
uniform mat4 uMVPMatrix;
attribute vec4 vPosition;
void main() {
gl_Position = uMVPMatrix * vPosition;
} …Run Code Online (Sandbox Code Playgroud) 我想管理另一个对象中的对象集合,但我无法预测该集合中元素的生命周期。
我在Syntax of Rust 生命周期说明符中找到了这个例子,它演示了我不能做的事情:
struct User<'a> {
name: &'a str,
}
// ... impls omitted
struct ChatRoom<'a> {
name: &'a str,
users: HashMap<&'a str, User<'a>>,
}
Run Code Online (Sandbox Code Playgroud)
ChatRoom持有Users的地图。每个User都是一个副本,尽管其中的名称User是共享引用。TheUser和 theChatRoom具有明确的生命周期,因此当它们加入时,编译器强制Users 必须比ChatRoom它们进入的寿命更长。
但是如果 myUser是在 之后创建的ChatRoom呢?我不能使用生命周期,因为编译器会抱怨。如果我删除User之前的ChatRoom? 我也不能那样做。
可能在它之后创建或在它之前销毁的ChatRoomhold Users怎么可能?我模糊地怀疑可以用盒子来实现这一点,但 Rust 的盒子文档很差,所以我不确定。
我想编写一个与Java服务器通信的Java SE客户端应用程序.想象一下类似于在线游戏的东西,其中存在大量流量并且可能多个客户端连接到同一服务器.
ActiveMQ似乎是一个合适的选择,但由于我从未像现在这样使用它,我不确定它是否具有性能或特性.
有人可以建议它是否合适,我可能会遇到什么陷阱,并且可能会建议一个演示类似于我正在考虑的内容的教程?