我有一些打印日志消息的python代码.在命令行运行时,使用utf-8就可以了.包含特殊字符的日志消息打印正常.但是,当在nohup下在后台运行时,它会在utf-8字符上进行barfs.
nohup python2.7 myProgram.py &
Run Code Online (Sandbox Code Playgroud)
我看到的错误是通常的"尝试在ascii中编码utf"错误:
UnicodeEncodeError:'ascii'编解码器无法对位置71中的字符u'\ u2013'进行编码:序数不在范围内(128)
我认为这是因为nohup向python发出信号,表示它没有正常的终端,因此默认为ascii.是否有任何方法可以告诉nohup在启用utf-8的情况下运行还是设置它以便utf-8字符在后台运行nohup时不会导致崩溃?
我正在使用Jersey为外界提供java REST服务.我提供了一些采用JSON的功能,我将Jackson框架与jersey结合使用,将它们转换为POJO.
我有一个问题,如果错误的杰克逊格式被发送到服务器,答案(http响应的内容)是杰克逊特定的异常描述.如果我有一个带有属性"surname"的POJO并将json字符串中的"sursname"发送到服务器,我得到:
Unrecognized field "sursname" (Class XY), not marked as ignorable at [Source: sun.net.httpserver.FixedLengthInputStream@903025; line: 1, column: 49] (through reference chain: XY["sursname"])
Run Code Online (Sandbox Code Playgroud)
这很好,但我想有自己的响应内容,例如我自己的错误代码.我已经编写了一个自定义的ExceptionMapper,它应该映射所有Throwables.
@Provider
public class WebserviceExceptionMapper implements ExceptionMapper<Throwable> {
@Override
public Response toResponse(Exception e) {
e.printStackTrace();
return Response.status(400).entity("{\"errorcode\":\"CRITICAL_ERROR\"}").type(MediaType.APPLICATION_JSON).build();
}
}
Run Code Online (Sandbox Code Playgroud)
似乎在调用我的webservice方法之前抛出了jackson异常,所以我没有机会映射它?
有没有人有想法?非常感谢,对不起我的英语;)
超级优先级比外级优先级高吗?
考虑我们有三个类:
ClassA.java:
public class ClassA {
protected String var = "A Var";
public void foo() {
System.out.println("A foo()");
}
}
Run Code Online (Sandbox Code Playgroud)
ClassB.java:
public class ClassB {
private String var = "B Var";
public void test() {
new ClassA() {
public void test() {
foo();
System.out.println(var);
}
}.test();
}
public void foo() {
System.out.println("B foo()");
}
}
Run Code Online (Sandbox Code Playgroud)
当我打电话时new ClassB().test(),我得到以下输出(这是非常期待的):
A foo()
A Var
Run Code Online (Sandbox Code Playgroud)
问题:它是在某个地方定义的,内部类首先从超类中获取(方法和成员),然后从外部类中获取,还是依赖于JVM编译器实现?我查看了JLS(§15.12.3),但找不到任何参考,也许有人指出,但我误解了一些条款?
我正在尝试使用Google API示例项目中提供的地图演示.我正在使用AVD并尝试使用版本8,10和11并获得相同的问题.
我已经生成了自己的调试密钥并添加到项目中.我可以看到应用程序启动时的地图,并可以放大等 - 所以我得到地图图块,很好.是的 - 我在清单文件中设置了正确的权限和库(根据示例).
但是,我无法通过DDMS或Telnet在地图上设置位置.我在LogCat中看到以下错误:MapActivity:无法获取连接工厂客户端
我已经阅读了很多关于这个问题的线索,但它们似乎总是由于API密钥错误而导致的; 我没有,因为我正在检索地图图块.
所以我创建了自己的项目来进一步测试,并在初始化我的地图时执行以下代码:
myLocationOverlay = new MyLocationOverlay(this, mapView);
mapView.getOverlays().add(myLocationOverlay);
myLocationOverlay.enableCompass();
myLocationOverlay.enableMyLocation();
Log.i("funkatron: ", "ABOUT TO CALL RUN ON FIRST FIX");
myLocationOverlay.runOnFirstFix(new Runnable() {
public void run() {
String loc = "we have a location, executing AnimateTo().
"+myLocationOverlay.getMyLocation().toString();
Log.i("funkatron:",loc);
mapController.animateTo(myLocationOverlay.getMyLocation());
}
});
Run Code Online (Sandbox Code Playgroud)
我看到我的第一个日志语句,但从来没有第二个,并且"MapActivity:无法获取连接工厂客户端"在此时被写入LogCat.
我已经读过SDK v8模拟器存在问题,所以我尝试了v10和11 - 但仍然没有乐趣.我还没有在实际的设备上试过这个 - 很快就会做到.
任何关于这个问题的帮助将不胜感激 - 这真让我感到困惑;)
干杯
抱歉,如果这个问题很愚蠢,但我无法理解Java语法.我学习了C/C++
我知道View是一个很好的类..但我不明白View.OnClickListener()是不是方法.
我怀疑它,除非它返回一个对象?
我认为View是一个具有静态OnClickListener成员对象的类,对我来说没有意义..
可以解释一下这行代码发生了什么吗?
button1 = (Button) findByView(R.id.button1) ;
button1.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
}
}
Run Code Online (Sandbox Code Playgroud)
那么这段代码发生了什么?
Button1 是对xml文件中button1对象的引用.
button1对象有一个成员对象setOnClickListener,我从它的名字我假设将事件初始化为按钮或其他东西.但它收到了View.OnClicListener()对象.
我很困惑.onClick收到一个View对象所以onClickListener不是一个对象返回一个View对象?? 我根本得不到它.
有人可以解释一下这行中发生的事情View.onClickListener()是另一种说法new this吗?
请参阅以下代码
wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
if (wifi.isWifiEnabled() == false)
{
Toast.makeText(getApplicationContext(), "wifi is disabled..making it enabled", Toast.LENGTH_LONG).show();
wifi.setWifiEnabled(true);
}
Run Code Online (Sandbox Code Playgroud)
虽然我已将清单文件中的权限添加为
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.test.wifi"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="8" />
<user-permission android:name="android.permission.ACCESS_WIFI_STATE" />
Run Code Online (Sandbox Code Playgroud)
但它仍然给出以下错误
11-23 15:18:24.399: E/AndroidRuntime(6800): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.test.wifi/com.test.wifi.WifiDemoActivity}: java.lang.SecurityException: WifiService: Neither user 10082 nor current process has android.permission.ACCESS_WIFI_STATE.
Run Code Online (Sandbox Code Playgroud)
请帮助解释为什么会这样
我在mac上使用eclipse IDE(版本:3.4.2),我遇到了以下问题.
当使用equal()或equalsIgnoreCase()方法比较字符串时,即使字符串相等,我也会收到false.例如,下面的代码将以下条件视为false,即使值[0] ="debug_mode"
if (values[0].equalsIgnoreCase("debug_mode"))
debug_mode = true;
Run Code Online (Sandbox Code Playgroud)
这是以下循环的一部分:
String value = dis.readLine();
String values[] = value.trim().split("=");
if (values.length >= 2)
{
Config.prnt_dbg_msg(values[0] + "\t" + values[1]);
if (values[0].equalsIgnoreCase("debug_mode"))
debug_mode = isTrue(values[1]);
if (values[0].equalsIgnoreCase("debug_query_parsing"))
debug_query_parsing = isTrue(values[1]);
if (values[0].equalsIgnoreCase("username"))
Connection_Manager.alterAccessParameters(values[1], null, null);
if (values[0].equalsIgnoreCase("password"))
Connection_Manager.alterAccessParameters(null, values[1], null);
if (values[0].equalsIgnoreCase("database"))
Connection_Manager.alterAccessParameters(null, null, values[1]);
if (values[0].equalsIgnoreCase("allow_duplicate_entries"))
allow_duplicate_entries = isTrue(values[1]);
}
Run Code Online (Sandbox Code Playgroud)
我尝试使用value[0].equal("debug_mode")并得到了相同的结果.有人知道为什么吗?
这是代码.它与此类似问题的代码相同:http://monkey.org/freebsd/archive/freebsd-stable/200401/msg00032.html.当我运行它时,我总是得到输出:
听取0.0.0.0:54493或其他什么.显然端口发生了变化,但我不知道为什么我一直在获得0.0.0.0的IP地址.我错过了什么吗?
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <string.h>
#include <stdlib.h>
#include <netinet/in.h>
#include <arpa/inet.h>
int main()
{
int sock;
int len = sizeof(struct sockaddr);
struct sockaddr_in addr, foo;
if((sock=socket(AF_INET, SOCK_STREAM, 0))<0)
{
exit(0);
}
memset(&addr, 0, sizeof(struct sockaddr_in));
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = INADDR_ANY;
addr.sin_port = htons(0);
if(bind(sock, (struct sockaddr *) &addr, sizeof(struct sockaddr_in))<0)
{
perror("bind");
exit(0);
}
if(listen(sock, 5)<0)
{
perror("listen");
exit(0);
}
getsockname(sock, (struct sockaddr *) &foo, &len);
fprintf(stderr, "listening on %s:%d\n", …Run Code Online (Sandbox Code Playgroud) 在我的应用程序中,我从相机拍摄照片,然后我得到该图片在相同的图片上做一些图像处理操作,但当我得到这个图片与data.getExtras().get("数据"),图片来了低分辨率而不是真正的决议.这个问题可能是什么原因?
代码就是这样;
Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent , CAMERA_PIC_REQUEST);
}
protected void onActivityResult(int requestCode , int resultCode , Intent data )
{
if( requestCode != 0)
{
ImageView image = (ImageView)findViewById(R.id.imageView1);
thumbnail = (Bitmap)data.getExtras().get("data");
Run Code Online (Sandbox Code Playgroud) 是否可以使用ImageButton来触摸和突出显示状态,而不需要在Android上再增加2个图像资源(另外6个,考虑到h/m/ldpi)?我基本上都在寻找类似于iOS的行为,其中操作系统可以在按钮的触摸状态下放置半alpha覆盖.
我已经尝试setColorFilter(0xFF000000, Mode.MULTIPLY)在onTouch监听器中使用,结果与我之后的结果非常接近 - 但我不确定状态处理的最佳方式来实现这一点:
即
有更好的方法......或者有人可以帮助填补空白吗?
我不想使用单独的图像有几个原因 - 它是一个iPhone端口,我还没有适当的资产,并且需要更多的设计师时间考虑我有低/中/高创意到考虑.
谢谢!
android ×5
java ×4
bitmap ×1
c ×1
exception ×1
google-maps ×1
image ×1
imagebutton ×1
inheritance ×1
jackson ×1
jersey ×1
mapactivity ×1
networking ×1
nohup ×1
overlay ×1
python ×1
sockets ×1
string ×1
utf-8 ×1
wifi ×1