我正在使用Eclipse 3.5,我创建了一个包含一些包结构和默认包的项目.我在默认包中有一个类 - Calculations.java,我想在任何一个包中使用该类(例如in com.company.calc
).当我尝试使用默认包中的类时,它给了我一个编译器错误.它无法识别默认包中的类.问题出在哪儿?
Calculations.java - 源代码
public class Calculations {
native public int Calculate(int contextId);
native public double GetProgress(int contextId);
static {
System.loadLibrary("Calc");
}
}
Run Code Online (Sandbox Code Playgroud)
我不能把我的班级放在任何其他包中.这个类有一些在Delphi中实现的本机方法.如果我将该类放在任何文件夹中,我将不得不对我想要避免的DLL进行更改(实际上 - 我不能).这就是为什么我把我的类放在默认包中.
我将运行document.querySelectorAll()很多,并且想要一个简写别名.
var queryAll = document.querySelectorAll
queryAll('body')
TypeError: Illegal invocation
Run Code Online (Sandbox Code Playgroud)
不行.鉴于:
document.querySelectorAll('body')
Run Code Online (Sandbox Code Playgroud)
仍然.如何使别名起作用?
https://msdn.microsoft.com/en-us/library/ms182161.aspx
此分页中描述的三个类是否在.NET Framework中专门处理?(NativeMethods,SafeNativeMethods和UnsafeNativeMethods)
我问的原因是我想知道是否可以创建NativeMethods类的类别.例如:
ComNativeMethods
User32NativeMethods
OleStorageNativeMethods
Run Code Online (Sandbox Code Playgroud) 我刚从mac上的mupdf.com编译mupdf.花了一些时间搞清楚,但现在我的libs/armeabi文件夹中有一个libmupdf.so.
他们提供了一个名为MuPDFCore.java的类的示例,可以在这里查看:http://mupdf.com/repos/mupdf/android/src/com/artifex/mupdf/MuPDFCore.java
我在我的项目中使用了这个类,它在LogCat中说了以下内容:
试图加载lib /data/data/com.myapp.android/lib/libmupdf.so 0x4070e050
添加了共享库/data/data/com.myapp.android/lib/libmupdf.so 0x4070e050
在/data/data/com.myapp.android/lib/libmupdf.so 0x4070e050中找不到JNI_OnLoad,跳过init
找不到本机Lcom/myapp/android/viewer/MuPDFCore; .openFile(Ljava/lang/String;)I的实现
DEBUG/AndroidRuntime(27523):关闭VM
WARN/dalvikvm(27523):threadid = 1:线程退出,未捕获异常(组= 0x400ee760)
错误/ AndroidRuntime(27523):致命异常:主要
ERROR/AndroidRuntime(27523):java.lang.UnsatisfiedLinkError:openFile
据我所知库正在加载,在我弄清楚如何编译库之前,它一直在崩溃,并说"mupdf"是一个空链接.
他们的例子几乎说openFile是一个原生函数......就在我想到这个问题时,另一个问题就出现了.我整天都在努力.任何输入都会很棒!
这是一个糟糕的编译吗?我在终端没有收到任何错误.
java-native-interface android native-methods libs android-ndk
我有简单的测试用例:
@Test
public void test() throws Exception{
TableElement table = mock(TableElement.class);
table.insertRow(0);
}
Run Code Online (Sandbox Code Playgroud)
其中TableElement是GWT类,其方法insertRow
定义为:
public final native TableRowElement insertRow(int index);
Run Code Online (Sandbox Code Playgroud)
当我开始测试时,我得到:
java.lang.UnsatisfiedLinkError: com.google.gwt.dom.client.TableElement.insertRow(I)Lcom/google/gwt/dom/client/TableRowElement;
at com.google.gwt.dom.client.TableElement.insertRow(Native Method)
Run Code Online (Sandbox Code Playgroud)
我相信哪个与insertRow方法有关.有没有办法或解决方法来模拟Mockito的这些方法?
我TestMe
使用EasyMock 对一个类进行单元测试,并且其中一个方法(比如说method(N n)
)期望一个N
具有本机方法的类型的参数(比方说nativeMethod()
).
class TestMe {
void method(N n) {
// Do stuff
n.nativeMethod();
// Do more stuff
}
}
Run Code Online (Sandbox Code Playgroud)
method()
需要N.nativeMethod()
在某个时候调用,而我遇到的问题是我的N的Easymock模拟对象无法覆盖本机方法.我不拥有N级,但我可以TestMe
以任何必要的方式进行重构.
我决定创建自己的课程FakeN extends N
,这个课程无效nativeMethod
:
class FakeN extends N {
FakeN(int pointer) {
super(pointer);
}
@Override
public void nativeMethod(Object o) {
// super.nativeMethod() is an actual native method defined as:
// public native void nativeMethod(Object o)
//
// IGNORE
}
}
Run Code Online (Sandbox Code Playgroud)
但是虽然编译器没有抱怨,但是当我运行测试时,它似乎N.nativeMethod()
是被调用的而不是 …
如果我不需要为旧版本的android授予支持并且只能使用API 17,那么是否有另一种方法来实现广告宣传的水平滑动(如在gmail中)而不使用viewpager,fragmentactivities(新的API已经有片段. ..)等摆脱支持库?
我发现横向滑动的所有教程都展示了如何使用支持库和FragmentActivities来完成它.否则,如果我不能使用他们的本机类和方法,新API的优势是什么?
android native-methods fragment android-viewpager android-support-library
我一直想知道是否有人知道
他们可以分享.
.
询问的原因是,当通过OpenGL ES学习时,该方法被广泛用于各种计算.但是,我发现android.renderscript.Matrix4f比使用原始float []数组更自然.问题是,Matrix4f的乘法函数使用临时矩阵来执行操作,这导致内存效率低下.
解决这个问题的一种方法是创建我自己的Matrix4f并自己编写multiply().我基于以下示例.它可能看起来很糟糕,但保存了我所有的set(),get()和循环,这提高了性能.
但是,我仍然不想让乘法器去.在源代码中,您可以读到该方法是原生的,因此应该更快地评估(是吗?).这让我再次怀疑.
.
因此,有谁知道:
我有一个元素.我想检查它是否符合特定查询,例如('.someclass')与querySelector的样式相同.
这并不像听起来那么容易.Element.querySelectorAll和Element.querySelector仅适用于相关元素的后代.不是元素本身.
var p = document.querySelector('p')
Run Code Online (Sandbox Code Playgroud)
注意:上面的行仅用于说明目的.在现实生活中,我实际上通过其他方式找到了元素.
p.querySelector('p')
Run Code Online (Sandbox Code Playgroud)
退货null
.因为querySelector仅对后代运行.
我可以:
p.parentNode.querySelector('.someclass')
Run Code Online (Sandbox Code Playgroud)
但是这将返回元素父元素的第一个子元素,它可能是一个不同的元素.例如,如果'p'是父级的第二个子级,则此代码将失败.
如何检查元素本身是否符合查询?
我想使用JSDom执行一些服务器方面的DOM操作.但是,尽管explcitly启用了querySelector,但在创建的文档中未定义:
var jsdom = require('jsdom');
// Yep, we've got QuerySelector turned on
jsdom.defaultDocumentFeatures = {
QuerySelector: true
};
var dom = jsdom.defaultLevel;
var document = jsdom.jsdom("<html><body><h1>Hello StackOverflow</h1></body></html>"),
window = document.createWindow();
Run Code Online (Sandbox Code Playgroud)
然而:
console.log(document.querySelector)
Run Code Online (Sandbox Code Playgroud)
返回
undefined
Run Code Online (Sandbox Code Playgroud)
如何使用jsdom使document.querySelector正常工作?
native-methods ×10
android ×4
java ×3
javascript ×2
.net ×1
android-ndk ×1
c# ×1
easymock ×1
fragment ×1
gwt ×1
jsdom ×1
libs ×1
matrix ×1
mockito ×1
node.js ×1
opengl-es ×1
overriding ×1
pinvoke ×1