我试图获取特定类中的字段数.但是,我使用的技术不起作用,并始终返回0:
this.getClass().getFields().length;
Run Code Online (Sandbox Code Playgroud)
如何获取特定类的字段数?
是否可以通过列名而不是sqlite中的索引来获取列数据?我不想依赖列的特定顺序.如果是这样,语法是什么?
运行Ubuntu 12.04
我已添加到PATH: /home/jeffrey/jdk1.6.0_43/lib
我正在尝试使用Make从源代码构建:
make -j16
Run Code Online (Sandbox Code Playgroud)
但遇到错误:
build/core/config.mk:268: *** Error: could not find jdk tools.jar, please install JDK6, which you can download from java.sun.com. Stop.
Run Code Online (Sandbox Code Playgroud)
任何人都可以向我解释为什么Make找不到tools.jar?
编辑
JAVA_HOME=/home/jeffrey/jdk1.6.0_43/bin/java
Run Code Online (Sandbox Code Playgroud)
通过env在shell中输入命令来确定.此外,这是为所有用户设置的etc/profile
另外:
jeffrey@jeffrey-Satellite-M645:~/WORKING_DIRECTORY$ java -version
java version "1.6.0_43"
Java(TM) SE Runtime Environment (build 1.6.0_43-b01)
Java HotSpot(TM) 64-Bit Server VM (build 20.14-b01, mixed mode)
jeffrey@jeffrey-Satellite-M645:~/WORKING_DIRECTORY$
Run Code Online (Sandbox Code Playgroud) 我正在开发一个导致操作系统冻结的Android应用程序.
我的问题很简单,但经过漫长的搜索,我已经没有接近答案了.
问题是,沙盒的应用程序怎么能导致整个Android操作系统(4.0.4,4.1.1,4.1.2)冻结?
具体来说,整个操作系统冻结.没有logcat,没有adb,没有!它像操作系统一样可以冻结.该设备是三星Galaxy Tab 2.该应用程序使用usb-serial-for-android项目中UsbManager的库和库.虽然库可能使用NDK,但我的应用程序却没有.本质上,应用程序与专业板串行通信,接收数据和发送串行命令.这是在以这种方式处理的工作线程上完成的:
try {
thread.interrupt();
thread.join();
while(thread.getState() != Thread.State.TERMINATED){
// wait until thread finishes
}
} catch (InterruptedException e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
一切正常,直到冻结发生 - 当我断开USB电缆或指示库对象断开连接时.无论哪种方式,整个操作系统都会变得不稳定并立即冻结或再次连接USB(板或计算机).我已将此冻结问题发布到usb-serial-for-android项目但尚未收到任何评论.我相信我在脱离usb时遵循了正确的协议.
我知道很多事情都可能出错 - 我的应用程序可以崩溃等.人.但是沙盒应用程序又是如何使操作系统崩溃的 - 如果能够做到这一点,它似乎并不是非常沙盒化的.
UPDATE
我经过多次实验后发现,通过删除thread.interrupt();它的工作线而不会崩溃应用程序或冻结操作系统.如果在没有先拆卸USB的情况下拔掉USB,它仍会冻结操作系统.
我仍然希望了解沙盒应用程序如何冻结整个操作系统.这里有评论回避答案,但不仅仅是答案.
我有两个Hashmaps
HashMap<Integer, Integer> inventoryRequirements = new HashMap<Integer, Integer>();
HashMap<Integer, Integer> inventory = new HashMap<Integer, Integer>();
Run Code Online (Sandbox Code Playgroud)
我有一个循环检查当前并添加到它:
for(Item item : items){
int currentRequirement = 0;
currentRequirement = inventoryRequirements.get(item.get_id());
inventoryRequirements.put(item.get_id(), currentRequirement++);
}
Run Code Online (Sandbox Code Playgroud)
我有另一个循环来检查库存并添加到它:
for(Item item : items){
int currentInventory = 0;
// this next line returns null
currentInventory = inventory.get(item.get_id());
inventory.put(item.get_id(), currentInventory++);
}
Run Code Online (Sandbox Code Playgroud)
第一个工作正常,但第二个工作并返回null.我不明白为什么第二个不起作用.两者最初都处于代码示例中描述的相同状态.
编辑
正如你在这看到的那样,两个HM就会填充 - 真的!我知道这可能很难相信,但第一个有效,第二个没有.
我的意图是在某种条件下发送的.日志证明它仅发送ONCE,但接收器正在接收它多次毫秒.
10-01 10:09:59.201: I/System.out(13543): SENDER CHECKPOINT
10-01 10:09:59.211: I/System.out(13543): RECEIVER CHECKPOINT
10-01 10:09:59.291: I/System.out(13543): RECEIVER CHECKPOINT
Run Code Online (Sandbox Code Playgroud)
我已经确认只有一个广播接收器注册,并且只有一个动作过滤器与注册的BR一起使用.它仅用于单个活动,其中在另一个线程中运行的服务广播intent.同样,日志证实了ONE广播和多个收据.更重要的是,额外信息在回显收据中为空.
怎么会这样?操作系统是否有可能回应它?
发送广播的代码:
private void sendBroadcast(boolean status, String message, String action){
System.out.println("SENDER CHECKPOINT");
Intent intent = new Intent(action);
Bundle bundle = new Bundle();
bundle.putBoolean("status", status);
bundle.putString("message", message);
intent.putExtras(bundle);
sendBroadcast(intent);
}
Run Code Online (Sandbox Code Playgroud)
接收广播的代码:
private class displayUpdate extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
System.out.println("RECEIVER CHECKPOINT");
};
}
Run Code Online (Sandbox Code Playgroud)
注册:
@Override
public void onResume() {
super.onResume();
try {
// just in case onResume is …Run Code Online (Sandbox Code Playgroud) 我正在使用jQuery的DataTables插件,但在尝试使用fnDestroy方法时不断收到以下错误:
Undefined
Run Code Online (Sandbox Code Playgroud)
我尝试过使用以下所有变种:
1)
$('#data').dataTable().fnDestroy();
Run Code Online (Sandbox Code Playgroud)
2)
var dt = $('#data').dataTable();
dt.fnDestroy();
Run Code Online (Sandbox Code Playgroud)
3)
var data = document.getElementById('data');
data.fnDestroy();
Run Code Online (Sandbox Code Playgroud)
'data'对象存在 - HTML如下:
<div class="resultset">
<table class="display" id="data">
<tbody>
</tbody>
</table>
</div>
Run Code Online (Sandbox Code Playgroud)
DataTable使用Javascript构建(此处未显示),但基础对象是硬编码的.
API文档显示第二种方法应该有效:
$(document).ready(function() {
// This example is fairly pointless in reality, but shows how fnDestroy can be used
var oTable = $('#example').dataTable();
oTable.fnDestroy();
} );
Run Code Online (Sandbox Code Playgroud)
编辑
DataTable显示正常,否则效果很好.当我尝试执行此功能时出现问题.
我使用来自Google代码中的Crypto-JS源站点的示例组合了一个简单的测试:
在页眉中:
<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/aes.js"></script>
Run Code Online (Sandbox Code Playgroud)
在Javascript函数中:
var encrypted = CryptoJS.AES.encrypt("Message", "Secret Passphrase");
var decrypted = CryptoJS.AES.decrypt(encrypted, "Secret Passphrase");
alert('encrypted: '+encrypted+' decrypted: '+decrypted);
Run Code Online (Sandbox Code Playgroud)
但输出是:
encrypted: U2FsdGVkX19hsNqFBS5xcUoVBCu/hPHepEwZchqnUVU=
decrypted: 4d657373616765
Run Code Online (Sandbox Code Playgroud)

我错过了什么?
我有一个 ResultSet 我从包含相关列的数据库中提取。我知道这一点,因为当我遍历记录时,我也会遍历列:
ResultSetMetaData rsmd = rs.getMetaData();
int numColumns = rsmd.getColumnCount();
try {
while(rs.next()) {
JSONObject obj = new JSONObject();
for (int i=1; i<numColumns+1; i++) {
String column_name = rsmd.getColumnName(i);
System.out.println(Time.formatDate(System.currentTimeMillis(), true)+" - [ResultSetConverter.convert] column_name ["+column_name+"]");
...
// line where exception is thrown
obj.put(column_name, rs.getString(column_name)+"");
}
}
} catch (Exception e) {
System.out.println(Time.formatDate(System.currentTimeMillis(), true)+" - [ResultSetConverter.convert] Exception: "+e.getMessage());
}
Run Code Online (Sandbox Code Playgroud)
这样做时,我将列名打印到控制台以验证是否存在:
4/1/2015 01:18 PM - [ResultSetConverter.convert] column_name [_id]
4/1/2015 01:18 PM - [ResultSetConverter.convert] column_name [image]
4/1/2015 01:18 PM - [ResultSetConverter.convert] column_name …Run Code Online (Sandbox Code Playgroud) android ×4
java ×4
bundle ×1
count ×1
cryptojs ×1
datatables ×1
enumeration ×1
exception ×1
field ×1
freeze ×1
hashmap ×1
javascript ×1
makefile ×1
path ×1
reflection ×1
resultset ×1
sqlite ×1
undefined ×1