小编Mar*_*erg的帖子

使用javax.mail删除服务器上的电子邮件

我正在使用IMAP协议从服务器接收电子邮件,就像这里描述的那样.这工作得非常好,我可以将电子邮件和附件存储在磁盘上.

问题:当客户端尝试接收所有电子邮件时,我是否有可能从服务器中删除文件,以便它们不再可用?如果是这样,请告诉我如何.

java email imap

34
推荐指数
1
解决办法
3万
查看次数

从super方法将新JavaDoc附加到现有JavaDoc

我已经生成了一个非常好的文档接口.每个方法都有自己的JavaDoc.实现此接口的条款在其逻辑上几乎没有区别.

如何从超类中将JavaDoc添加到现有JavaDoc中.关键词

/**
 * {@inheritDoc}
 */
Run Code Online (Sandbox Code Playgroud)

只将超类的javaDoc设置为当前方法.但是当我尝试添加一些单词时,超级方法的JavaDoc就不见了

/**
 * {@inheritDoc}
 * These value depends on...
 */
Run Code Online (Sandbox Code Playgroud)

有没有人知道我如何更新超级方法的JavaDoc,而不删除.

编辑:

关于Brian Agnew的答案,这很好但不是真正的答案;)

如果要覆盖现有方法(如Swing中的paint()),并且想要描述如何从外部初始化或处理绘制行为,则也会遇到同样的问题.这不仅适用于界面描述.

java methods comments javadoc interface

22
推荐指数
1
解决办法
7260
查看次数

在屏幕上查找复合位置

我正在Java中为SWT和AWT实现一个屏幕键盘.一个重要的事情是将键盘移动到所选文本字段可以显示的位置,而不是位于屏幕键盘后面.

对于AWT,我可以检测当前所选组件的位置

Component owner = KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner();
if (owner == null) {
    return;
}
Point ownerLocation = owner.getLocationOnScreen();
Dimension ownerSize = owner.getSize();
Run Code Online (Sandbox Code Playgroud)

如何在SWT中实现相同的逻辑?我通过将一个focuslistener添加到SWT事件队列来获取当前选定的小部件.但是当我打电话时

Point location = new Point(mTextWidget.getLocation().x, mTextWidget.getLocation().y);
Dimension dimension = new Dimension(mTextWidget.getSize().x, mTextWidget.getSize().y);
Run Code Online (Sandbox Code Playgroud)

我将获得与父复合相对的位置.

如何才能将特殊小部件的位置与整个屏幕相关联?

java plugins swing swt awt

8
推荐指数
1
解决办法
8625
查看次数

eclipse RCP中的plugin.properties机制

我的项目包括多个插件,每个插件都包含plugin.properties文件,有近20个翻译.MANIFEST.MF文件定义存储外部插件字符串的属性文件的名称.

Bundle-Localization: plugin
Run Code Online (Sandbox Code Playgroud)

我定义的插件的名称

%plugin.name
Run Code Online (Sandbox Code Playgroud)

Eclipse将在运行时搜索plugin.properties文件中的"%plugin.name".

哪个类读出了MANIFEST.MF Bundle-Localization条目,并且在"plugin.properties"文件中搜索了带有起始'%'后缀的字符串?

我想以这种方式找到并修补这些类,我可以先查看一些其他目录/文件中的"%plugin.name"标识符.使用这些新机制,我可以在我的产品中添加片段并覆盖"plugin.properties"文件中的单行,而无需更改原始插件.通过这些机制,我可以通过添加不同的片段为多个客户创建构建过程.片段包括他们想要更改的客户名称和特殊字符串.

我想这样做,因为片段机制只将文件添加到原始插件.当插件中存在"plugin.properties"文件时,将忽略片段"plugin.properties"文件.

更新1:

方法

class ManifestLocalization{
...
protected ResourceBundle getResourceBundle(String localeString) {
}
...
}
Run Code Online (Sandbox Code Playgroud)

返回给定语言环境字符串的属性文件的ResourceBundle.当有人知道我现在如何首先查看片段以获取资源路径时请发布它.

更新2:

类ManifestLocalization中的方法

    private URL findInResolved(String filePath, AbstractBundle bundleHost) {

        URL result = findInBundle(filePath, bundleHost);
        if (result != null)
            return result;
        return findInFragments(filePath, bundleHost);
    }
Run Code Online (Sandbox Code Playgroud)

搜索属性文件并对其进行缓存.翻译可以从缓存文件中获取.问题是,完整文件是缓存的而不是单个翻译.

解决方案是首先读取片段文件,而不是读取包文件.当两个文件都存在时,将它们合并到一个文件中,并将新属性文件写入磁盘.返回新属性文件的URL,以便可以缓存新的propetries文件.

java rcp plugins fragment

7
推荐指数
1
解决办法
1万
查看次数

使用基于USB的硬件解决方案的盗版保护

我想通过使用一些基于USB的身份验证和密码管理解决方案来保护我的Java产品,就像你可以在这里购买一样: aladdin 这意味着你必须先连接一个带有特殊软件的USB记忆棒,然后才能启动你的应用程序.

我想在这里使用像这样的硬件的用户的一些经验.

  • 这听起来安全吗?
  • 一般:你会花多少钱来保护一个会卖100次的软件?

我将对我的Java代码进行模糊处理,并将一些用户特定的操作系统设置保存在位于硬盘上某处的加密文件中.我不想限制用户进行在线注册,因为应用程序不需要互联网.

谢谢

评论: 我工作的公司现在使用Wibu超过5年.

java hardware authentication protection piracy-protection

6
推荐指数
4
解决办法
3682
查看次数

在JLabel中显示BMP

Java可以显示png,jpg等一些其他图片格式,但我必须通过获取文件路径在JLable中显示bmp文件.

ImageIcon imageIcon = new ImageIcon(imageFile.getAbsolutePath());
Run Code Online (Sandbox Code Playgroud)

ImageIcon支持典型png,gif,jpg图像.

在我正在工作的项目中,我无法打开bmp文件并将相同的文件存储为jpg,因为我不允许在运行时存储某些内容.我只能在内存中生成图像.但我不知道该怎么做.

我怎样才能显示BMPJava 1.4

谢谢

java image bmp

6
推荐指数
2
解决办法
9847
查看次数

在Linux上使用Bundle-NativeCode不起作用

我创建了一个包含以下文件夹结构的插件:

  • SRC
  • 本地/所以/ libsystemcommand.so
  • META-INF/MANIFEST.MF

清单包括命令

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Commands Plug-in
Bundle-SymbolicName: de.system.commands;singleton:=true
Bundle-Version: 1.0.0
Bundle-Activator: de.system.commands.CommandsPlugin
Bundle-Localization: plugin
Bundle-NativeCode: native/so/libsystemcommand.so; osname = Linux; processor = x86
Require-Bundle: org.eclipse.core.runtime,
 org.apache.commons.logging
Eclipse-AutoStart: true
Export-Package: de.system.commands,
 de.system.commands.jni,
 de.system.commands.utils
Bundle-ClassPath: .
Run Code Online (Sandbox Code Playgroud)

build.properties看起来像

source.. = src/
output.. = bin/
bin.includes = META-INF/,\
               .,\
               native/
Run Code Online (Sandbox Code Playgroud)

在我Activator班的开始方法中,我打电话

System.loadLibrary("systemcommand");
Run Code Online (Sandbox Code Playgroud)

在运行时,找不到库并抛出UnsatisfiedLinkError.

java.lang.UnsatisfiedLinkError: no libsystemcommand in java.library.path
Run Code Online (Sandbox Code Playgroud)

我是否必须在插件中设置更多属性?我是否必须在目标平台上解压缩一些信息?

编辑:

java.library.path=/opt/jdk/j2re1.4.2_16/lib/i386/client:/opt/jdk/j2re1.4.2_16/lib/i386:/opt/jdk/j2re1.4.2_16/../lib/i386::/opt/dsa/lib:/opt/dsa/lib
Run Code Online (Sandbox Code Playgroud)

java linux bundle eclipse-plugin shared-libraries

5
推荐指数
1
解决办法
3960
查看次数

getMethod 正在缓存并导致内存泄漏

我正在使用自动生成的 Java 类来执行特殊方法。因此,我必须通过反射调用该方法。

此执行由 Swing 线程触发,因为该方法(从“未知”类调用)正在更新 UI 元素。新线程的每次执行都是通过调用在类中搜索方法

Class {
...
public Method[] getMethods() throws SecurityException
...
}
Run Code Online (Sandbox Code Playgroud)

getMethods 的逻辑,缓存元素,但我不知道为什么。Profiler 告诉我,Method 对象正在浮动内存。

我可以通过设置系统属性“sun.reflect.noCaches”来禁用 Java 的方法缓存,但是在我更改这些属性后,我的应用程序变得异常缓慢。

问题: 在尝试从类中获取方法之前,我可以实现自己的缓存算法。但是我正在工作的项目非常大,我们有多个反射调用。

什么可以解决这些问题?

哪些情况会触发这些内存泄漏(错误的类加载器,...)?

该项目使用 Java 1.5 在 Linux 下运行

java reflection memory-leaks class

5
推荐指数
1
解决办法
2452
查看次数

检测哪个监视器显示窗口

我有主应用程序JFrame窗口,它可以包含不同的组件.当用户选择可编辑的文本字段时,我打开一个自己实现的OnScreenKeyboard.OSK也是一个JFrame窗口.

当用户将主窗口拖动到另一台监视器时,OSK也应显示在同一监视器上.为此,我必须检测显示器,显示主JFrame.

我试着找到一个方法

Toolkit.getDefaultToolkit()
Run Code Online (Sandbox Code Playgroud)

但是找不到东西.

你知道我怎么能检测显示JFrame的显示器吗?

Java-Version 1.4 Windows XP

谢谢

java windows multiple-monitors toolkit jframe

3
推荐指数
1
解决办法
3589
查看次数

C编程指针

我不明白为什么最后一个代码块生成1819043176 1870078063 6581362 0 1 2 3 4 0 6488159 ...这些数字不是随机的,但为什么这些数字呢?谢谢!

int main(void) {
    int x;
    int y[10];
    int* p;
    char* q;
    int k;
    char* prefix;

    k = 0;
    while (k < 10) {
            y[k] = k;
            k = k + 1;
    }
    x = 42;
    printf("address of y are %d %d %d\n", y, y + 1, y + 9);
    doit(y + 1);

    p = &y[0];
    printf("p is %d\n", p);
    *p = 42;
    p = p + 9;
    printf("p is …
Run Code Online (Sandbox Code Playgroud)

c

0
推荐指数
1
解决办法
443
查看次数