我一直在用Java构建开发环境(作为一个小型研究项目).作为其中的一部分,我构建了一个自定义文本组件,使用Graphics2d绘制文本本身,如下所示:
g2.drawString("some text", 100, 100);
Run Code Online (Sandbox Code Playgroud)
使用1.6(我假设这是由Apple提供),所有东西都在Eclipse中很好地开发,直到我打包并运行java 1.7(由Oracle提供).显然在开发环境中字体非常重要,所以我很不高兴看到1.7中的结果.
我尝试过包装自定义字体,但它们都显得粗糙和腐蚀.上面的比较并不算太差,但有些字体(如摩纳哥)看起来很糟糕.
我猜这与Apple如何将事物挂钩到Quartz有关.但有没有办法改善事物,所以它在其他系统上看起来并不可怕?有没有人有这个策略?
更新:这是摩纳哥的比较:

以及摩纳哥C(在paintComponent中)的缩放比较(左边是1.7,右边是1.6).请注意,我正在使用以下方法从本地ttf文件加载字体:
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("monaco.ttf");
Font customFont = null;
try
{
customFont = Font.createFont(Font.TRUETYPE_FONT, is);
customFont = customFont.deriveFont(16.0f).deriveFont(Font.BOLD);
is.close();
ge.registerFont(customFont);
} catch (FontFormatException e1)
{
e1.printStackTrace();
} catch (IOException e1)
{
e1.printStackTrace();
}
this.setFont(customFont);
Run Code Online (Sandbox Code Playgroud)

另请注意,使用以下命令打开抗锯齿:
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
Run Code Online (Sandbox Code Playgroud) 我一直在分析我的java应用程序,并且对我报告的应用程序的内存使用情况感到困惑(通过eclipse运行).它总是与分析器报告的内存使用量大不相同,并且实际上甚至不匹配.
应用程序的JVM标志是:
-Xmx1G
-Xms1G
-XX:MaxMetaspaceSize=256M
-XX:CompressedClassSpaceSize=256MRun Code Online (Sandbox Code Playgroud)
此图像显示进程"java"的报告内存为1.67GB.当我双击该过程时,细分显示1.15GB的"实际内存大小"和各种其他内存指标.

飞行记录器显示应用程序坚持其1GB堆大小.我进行了测试,表明它也符合其元空间限制.

我的问题有两个:1)任何想法为什么报告的内存使用在过程(由Mac OS X报告)和分析器之间是如此不同?2)知道为什么活动监视器中显示的内存与进程内存崩溃之间存在差异?
我在使用OpenCV for Android中的一些通用函数时遇到以下错误
12-05 21:08:55.486: E/cv::error()(6658): OpenCV Error: Assertion failed (src.dims == 2 && info.height == (uint32_t)src.rows && info.width == (uint32_t)src.cols) in void Java_org_opencv_android_Utils_nMatToBitmap2(JNIEnv*, jclass, jlong, jobject, jboolean), file /home/oleg/sources/opencv/modules/java/generator/src/cpp/utils.cpp, line 107
12-05 21:08:55.486: E/org.opencv.android.Utils(6658): nMatToBitmap catched cv::Exception: /home/oleg/sources/opencv/modules/java/generator/src/cpp/utils.cpp:107: error: (-215) src.dims == 2 && info.height == (uint32_t)src.rows && info.width == (uint32_t)src.cols in function void Java_org_opencv_android_Utils_nMatToBitmap2(JNIEnv*, jclass, jlong, jobject, jboolean)
12-05 21:08:55.486: E/CameraBridge(6658): Mat type: Mat [ 144*192*CV_8UC3, isCont=true, isSubmat=false, nativeObj=0x1024c0, dataAddr=0x44783010 ]
12-05 21:08:55.486: E/CameraBridge(6658): Bitmap type: 384*288
12-05 …Run Code Online (Sandbox Code Playgroud) 我一直在使用Opencv 2.4.5和Java构建一个应用程序,现在想分发应用程序.使用以下内容加载库:
static{
System.loadLibrary("opencv_java245");
}
Run Code Online (Sandbox Code Playgroud)
哪个工作正常.但是,在导出时,从jar运行时它不起作用:
java -jar build1.jar
Run Code Online (Sandbox Code Playgroud)
opencv_java245.jar文件作为用户库包含在内,并连接了一个本机文件(libopencv_java245.dylib).当运行从Eclipse生成的可执行jar时,我得到下面的UnsatisfiedLinkError,尽管在eclipse中编译/运行正常.
Exception in thread "main" java.lang.UnsatisfiedLinkError: no opencv_java245 in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1860)
at java.lang.Runtime.loadLibrary0(Runtime.java:845)
at java.lang.System.loadLibrary(System.java:1084)
at com.drawbridge.Main.<clinit>(Main.java:12)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:266)
at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:56)
Run Code Online (Sandbox Code Playgroud)
有人知道在罐子里打包OpenCV的简单方法吗?
更新:我现在已经筋疲力尽了.我可以将库添加到我的构建路径(而不是使用System.loadLibrary),这可以在eclipse中使用,但不能在jar中打包.我已经尝试了一切.我还检查了我正在尝试加载的动态库的类型 - 它是
Mach-O 64-bit x86_64 dynamically linked shared library
Run Code Online (Sandbox Code Playgroud)
这似乎应该工作正常.我用-D64和-D32来测试并得到两者相同的结果.
得到以下似乎在网上不常见的消息:
fatal: unknown style 'diff' given for 'merge.conflictstyle'
Run Code Online (Sandbox Code Playgroud)
我已经查找了merge.conflictstyle和diff的样式,而diff3似乎是合适的.我不知道我能在哪里/应该改变这一点,但它不允许我推动任何更改,因为分支落后,因为我无法拉动由于上面的消息:(.