小编moa*_*fee的帖子

引用非最终变量:为什么这段代码会编译?

首先,如果这是一个重复的问题,我道歉.我找到了许多类似的,但没有一个直接解决我的问题.

为准备即将到来的考试,我正在做一篇过去的论文.它有一个提供代码段的问题.我们必须声明它是否编译,如果不编译,则写入发生第一个编译器错误的行并解释它.这是片段:

public static void main(String[] args) {
    JFrame f = new JFrame("hi");
    JTextField jtf = new JTextField(50);

    jtf.addMouseMotionListener(new MouseMotionAdapter() {
        public void mouseMoved(MouseEvent evt) {
            jtf.setText(evt.getLocationOnScreen().toString());
        }
    });

    f.add(jtf);
    f.setVisible(true);
}
Run Code Online (Sandbox Code Playgroud)

我期待它不要编译,因为jtf不是final.我通过在Eclipse中输入上面的代码测试了我的理论,它标记了预期的错误,但编译并运行得很好.只有在鼠标停留之后JTextField我才得到预期的错误:

java.lang.Error:未解决的编译问题:无法引用封闭范围中定义的非最终局部变量jtf

我做了一些搜索,发现Eclipse使用自己的Java编译器版本.所以我在Eclipse之外重新创建了文件,并通过命令行编译/运行它.它编译时没有错误或警告,当鼠标悬停在文本字段上时,显示所需的内容java.awt.Point[x=...,y=...].

我对匿名内部类的理解是他们可以访问:

  • 封闭类的字段
  • 封闭类的方法
  • 封闭范围的局部变量,只要它们是 final

那我错过了什么?根据我的知识,这段代码不应该工作.

java inner-classes java-8

27
推荐指数
2
解决办法
1982
查看次数

尝试使用ffmpeg时,AWS Lambda权限被拒绝

我想编写一个响应S3 put事件的处理程序来转换任何上传到mp4的avi文件.我在Java中使用AWS工具包插件在Eclipse中完成它.对于视频转换,我使用ffmpeg和ffmpeg-cli-wrapper,我在源代码树中提供了ffmpeg的静态(linux)二进制文件.

我发现当我上传函数时,二进制文件被放入/var/task,但是当我尝试使用我编写的测试函数时,我得到了"权限被拒绝"错误.

import net.bramp.ffmpeg.FFmpeg;

public class LambdaFunctionHandler implements RequestHandler<S3Event, String> {

    private static final String FFMPEG = "/var/task/ffmpeg";

    public String handleRequest(S3Event event, Context context) {

        try {
            FFmpeg ff = new FFmpeg(FFMPEG);
            System.out.println(ff.version());
        } catch (Exception e) {
            e.printStackTrace();
        }

        return "foo";
    }
}
Run Code Online (Sandbox Code Playgroud)

并且堆栈跟踪的第一行:java.io.IOException: Cannot run program "/var/task/ffmpeg": error=13, Permission denied.

我该如何执行这个二进制文件?我已经完成了其他人的建议和chmod 755上传之前的二进制文件,但它没有什么区别.

linux amazon-ec2 amazon-web-services aws-lambda

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

检测测试:getActivity()导致NullPointerException

当我运行我的测试时,我收到此错误:

java.lang.NullPointerException:尝试在空对象引用上调用虚方法'void android.app.Instrumentation.setInTouchMode(boolean)'

在android.test.ActivityInstrumentationTestCase2.getActivity(ActivityInstrumentationTestCase2.java:100)

at com.example.my_project.MyActivityTest.setup(MyActivityTest.java:46)

这是我的代码:

@RunWith(AndroidJUnit4.class)
public class MyActivityTest extends ActivityInstrumentationTestCase2<MyActivity> {

    private MyActivity myActivity;
    // ...

    public MyActivityTest() {
        super(MyActivity.class);
    }

    @Before
    public void setup() throws Exception {
        super.setUp();

        setActivityInitialTouchMode(true);
        myActivity = getActivity();
    }
Run Code Online (Sandbox Code Playgroud)

我也试过用这样的测试方法替换上面的大部分代码:

@Test
public void testActivityNotNull() {
    MyActivity myActivity = getActivity();
    assertNotNull(myActivity);
}
Run Code Online (Sandbox Code Playgroud)

但我得到了同样的错误.为什么会这样?

android android-studio

4
推荐指数
1
解决办法
4151
查看次数

正确的模板类方法签名,返回自己的类型

我的具体案例涉及一个自定义迭代器,但这个问题很普遍.我不确定如何编写此postfix增量方法的返回类型:

template<typename T>
struct MyIterator {
    size_t loc;

    MyIterator operator++(int) {
        MyIterator temp(*this);
        ++loc;
        return temp;
    }
};
Run Code Online (Sandbox Code Playgroud)

编译,但这样做:

template<typename T>
struct MyIterator {

    size_t loc;

    MyIterator<T> operator++(int) {
        MyIterator<T> temp(*this);
        ++loc;
        return temp;
    }
};
Run Code Online (Sandbox Code Playgroud)

另外两个配置也可以正常工作(即<T>只打开其中一个实例MyIterator).有没有"正确"的方式来写这个?有关系吗?

c++ oop templates class operator-overloading

4
推荐指数
1
解决办法
200
查看次数

如何在没有SID的情况下解决ORA-12505

我正在执行django项目,并且在尝试连接到Oracle数据库时收到以下消息:

DataBaseError:ORA-12505:TNS:侦听器当前不知道在
连接描述符

网上所有答案都说“您需要确保您具有正确的SID”,所以我问工作中管理所有数据库的人员,他说:“我们没有这些人员的SID。我们使用服务名称代替。”

我可以通过命令行访问数据库,但是试图让django做到这一点使我发疯。任何帮助将不胜感激。谢谢

编辑:这是我的settings.py文件。不太有趣...这是一个新项目。

DEBUG = True
TEMPLATE_DEBUG = DEBUG

ADMINS = ( ,
)

MANAGERS = ADMINS

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.oracle',
        'NAME': '',
        'USER': 'a_user',                     
        'PASSWORD': 'a_password',                 
        'HOST': 'a_host',
        'PORT': '1521',
    }
}


TIME_ZONE = 'Europe/London'

LANGUAGE_CODE = 'en-us'

SITE_ID = 1

USE_I18N = True

USE_L10N = True

USE_TZ = True

MEDIA_ROOT = ''

MEDIA_URL = ''

STATIC_ROOT = ''

STATIC_URL = '/static/'

STATICFILES_DIRS = (

)


STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
#    'django.contrib.staticfiles.finders.DefaultStorageFinder', …
Run Code Online (Sandbox Code Playgroud)

oracle django

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

如何在Python中将SQL Server结果导出到Excel

我正在使用自己的框架

我想使用ion python导出sql server结果集(查询一个)到excel.

在python文件里面我可以调用那个sql查询结果.

然后我想将查询结果导出到带有标头的excel.

这意味着一旦我调用python文件,该查询结果应该保存为excel电子表格.

请任何人帮我正确做到这一点?

python

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